Seite 1 von 2
"Ruhezustand" ermitteln
Verfasst: 13.10.2005 15:14
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
Verfasst: 13.10.2005 20:34
von ts-soft
Vielleicht hilft dieser link:
http://msdn.microsoft.com/library/defau ... mation.asp
Bei mir ist Ruhezustand Gott sei Danke, deaktiviert
//Edit: tschuldige, nicht richtig gelesen

, Thema verfehlt
Verfasst: 13.10.2005 21:42
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

)
Verfasst: 13.10.2005 22:25
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!
Verfasst: 13.10.2005 23:32
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
Verfasst: 13.10.2005 23:36
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.
Verfasst: 14.10.2005 03:23
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.
Verfasst: 14.10.2005 06:51
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
Verfasst: 14.10.2005 22:07
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?)
Verfasst: 15.10.2005 17:28
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
