"Ruhezustand" ermitteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

"Ruhezustand" ermitteln

Beitrag von Kiffi »

Hallo,

ich habe mir gerade mal die Beta2 der Google-Desktopsuchmaschine
installiert. Dieses Teil wird ja nur dann aktiv, wenn sich der Rechner in einem
"Ruhezustand" befindet (sprich: Wenn der Anwender momentan nichts am
Rechner macht).

Die Ermittlung eines solchen Ruhezustands könnte ich für mein derzeitiges
Projet gut gebrauchen. Weiss wer, wie man diesen Zustand ermittelt? Einfach
Maus- und Tastaturaktivitäten abfragen und wenn sich da seit längerer Zeit
nix tut, loslegen?

Und wenn ja: wie kann man möglichst schonend Tastatur- und
Mausaktivitäten abfragen?

OK, die Tastatur kann man ja relativ einfach mit einem programminternen
Hook abfragen. Bei der Maus wird's aber schwierig, weil man hier u.U. eine
globale Hook-DLL benötigt(?).

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Vielleicht hilft dieser link: http://msdn.microsoft.com/library/defau ... mation.asp
Bei mir ist Ruhezustand Gott sei Danke, deaktiviert :wink:

//Edit: tschuldige, nicht richtig gelesen :oops: , Thema verfehlt
Zuletzt geändert von ts-soft am 13.10.2005 22:29, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Bei mir ist Ruhezustand Gott sei Danke, deaktiviert
Ich finde ihn ganz praktisch. Wenn man gerade an einer größeren Sache arbeitet und dann schließlich zwecks diverser Gründe (Schlaf, Essen, etc.) unterbrechen muss, wirft man einfach den Ruhezustand an. Der Rechner kopiert dann alle im Speicher befindlichen Prozesse auf die Festplatte und schaltet sich aus. Wenn man dann später den Rechner wieder startet, wird der Arbeitsspeicher einfach mit den Daten, die auf der Festplatte liegen, gefüttert. Anschließend kann man an der Stelle weiterarbeiten, wo man vorher aufgehört hat. Alle Programme, die vorher schon gestartet waren, laufen auch danach noch. Es ist, als hätte man den Rechner nie ausgeschaltet.

Von daher, Ruhezustand = guter Zustand ;)

(Deinen ;) Smily hab ich nicht übersehen ;) )
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

laurin: Wenn man dann später den Rechner wieder startet, wird der Arbeitsspeicher einfach mit den Daten, die auf der Festplatte liegen, gefüttert.
Ich glaube kiffi meint das anders,der rechner ist dann ja nicht aus!
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Ich glaube kiffi meint das anders,der rechner ist dann ja nicht aus!

jepp, ich meine die Zeit, in der der Anwender etwas längere Zeit nicht auf der
Tastatur herumhackt oder die Maus schubst. Nun könnte man ja davon
ausgehen, dass der User sich gerade einen Kaffee holt (oder einen
wegbringt). Diese Zeit kann man dann prima nutzen, um rechenintensive
Funktionen aufzurufen (den Anwender stört's ja nicht, weil er momentan nicht
am Rechner arbeitet). Wenn er aber wieder loslegt, dann sollen die
Berechnungen unterbrochen werden, damit der Anwender wieder die volle
Rechenpower für sich hat.

Grüße ... Kiffi
a²+b²=mc²
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Wie wärs, wenn Du die CPU Auslastung checkst und ab einem gewissen Schwellwert in Aktion trittst? Oder Du bleibst gleich in Aktion und setzt die Priorität deines Prozesses auf extrem niedrige Stufe. Damit hab ich gute Erfahrungen gemacht. Ich habs sogar beim Zocken nicht gemerkt, dass ein Programm von mir im Hintergrund lief. Das hat sich einfach die restliche Idle-Zeit geschnappt.
Optimismus ist ein Mangel an Information.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Kiffi hat geschrieben:> Ich glaube kiffi meint das anders,der rechner ist dann ja nicht aus!

jepp, ich meine die Zeit, in der der Anwender etwas längere Zeit nicht auf der
Tastatur herumhackt oder die Maus schubst.
Achso! Standby war gemeint. Ok, dann hat sich das ja erledigt.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
deMattin
Beiträge: 87
Registriert: 30.08.2004 13:36
Wohnort: Ruhrpott
Kontaktdaten:

Beitrag von deMattin »

Also ich finde das Thema ebenfalls sehr interessant, wenn auch aus anderem Grund. Ich habe ein Hintergrundprogramm geschrieben, das systembedingt den Rechner nie automatisch in den Ruhe- oder Standby-Modus gehen lässt.
Die Aktivitäten des Programms verhindern also die systemeingestellte Funktion. Daran kann ich auch nichts ändern, aber ich würde gerne die Windos-eigene Funktion nachbilden, die man im Energiemanagement einstellen kann.
Den Rechner in Syspend to Disk oder Suspend to Ram zu schicken ist ja nicht das Problem, aber eben die Erkennung der Nutzerinaktivität.
CPU-Auslastung fällt als Erkenungskrierium aus, da das doch zu ungenau ist. Es bleibt also nur die Erkennung von Benutzerinaktivität (keine Maus- oder Tastaturnutzung) oder noch besser wäre natürlich, das eigene Programm für die Erkennung der windowseigenen Funktion "unsichtbar" zu machen.
Dass also trotz Programmaktivität der Rechner genauso automatisch schlafen geht, als ob dieses eine Programm eben nicht aktiv wäre.

Vielleicht hat ja jemand eine gloreiche Idee dazu ... ;-)

Gruß,
Martin
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

<dämlicheIdde>
Programm als Bildschirmschonder speichern
</dämlicheIdee>

Aber es wird doch wohl irgendo diese Funktion stehen, mit der Windows den Bildschirmschoner bei mangelder Maus und Tastaturnutzung startet. (msdk?)
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
bingo
Beiträge: 118
Registriert: 16.09.2004 18:33
Wohnort: thüringen
Kontaktdaten:

Beitrag von bingo »

Code: Alles auswählen

Structure tagLASTINPUTINFO
cbSize.l
dwTime.l
EndStructure

PLASTINPUTINFO.tagLASTINPUTINFO
PLASTINPUTINFO\cbSize=SizeOf(PLASTINPUTINFO)


For i=1 To 10
;move mouse or click key ...
GetLastInputInfo_(@PLASTINPUTINFO)
Debug PLASTINPUTINFO\dwTime
Delay(2000)
Next
:)
1:0>1
Antworten