Entwickler-Ecke

Windows API - PC aktiv?


*Knust* - Mo 14.07.08 20:04
Titel: PC aktiv?
Moin!

Ich würde gerne mal wissen, ob man irgendwie herausfinden kann, ob die Tastatur, oder die Maus eines PCs im Augenblick benutzt wird.
Ich würde nämlich gerne ein Programm schreiben, was immer im Hintergrund läuft und, wenn es merkt, dass der Benutzer gerade niccht aktiv is, andere Programme startet, die relativ viel RAM fressen und deshalb möglichst nicht bei aktiver Benutzung des PCs laufen sollten.

Kann man also irgendwie herausfiden, ob die Maus bewegt wird oder die Tastatur benutzt wird mit einem Programm, was im Hintergrund läuft?

mfg

Knust


Moderiert von user profile iconChristian S.: Topic aus Internet / Netzwerk verschoben am Mo 14.07.2008 um 20:07


Yogu - Mo 14.07.08 20:13

user profile icon*Knust* hat folgendes geschrieben:
Kann man also irgendwie herausfiden, ob die Maus bewegt wird oder die Tastatur benutzt wird mit einem Programm, was im Hintergrund läuft?

Natürlich kann man das. :D

Die eine Möglichkeit wären Suche in: Delphi-Forum, Delphi-Library HOOKS.

Die andere, die Tastatur und Maus in einer Schleife abzufragen. Das wäre vielleicht nicht gerade die schönste Methode, aber sie ist einfacher.

Für die Tastatur benötigst du GetAsyncKeystate und eine Reihe der virtuellen Tastencodes. Einge davon wären zum Beispiel VK_RETURN, VK_ESCAPE, VK_UP oder VK_DOWN. Wenn eine dieser Aufrufe einen wert kleiner Null lieft, ist eine Taste gedrückt. Du kannst somit Änderungen feststellen.

Um die Maus auf Bewegung zu testen, musst du mehrmals GetCursorPos abfragen, und den Unterschied testen.

Der deutlich bessere Weg wäre aber natürlich immer noch der über Hooks. Dazu bietet sich das Tutorial von Assarbad [http://assarbad.net/stuff/tutorials/hooks/hook_tutorial.pdf] an.


Narses - Mo 14.07.08 20:16
Titel: Re: PC aktiv?
Moin!

user profile icon*Knust* hat folgendes geschrieben:
andere Programme startet, die relativ viel RAM fressen
8) ...also, ich würde ja zu gerne mal ein Programm sehen, das RAM frisst... :rofl: besonders die Geräuschkulisse interessiert mich dabei

user profile icon*Knust* hat folgendes geschrieben:
Kann man also irgendwie herausfiden, ob die Maus bewegt wird oder die Tastatur benutzt wird mit einem Programm, was im Hintergrund läuft?
Ich schlage mal diesen Ansatz vor: Du findest raus, wenn der Suche in: Delphi-Forum, Delphi-Library BILDSCHIRMSCHONER AKTIV wird und startest dann dein Programm. :idea: Bleibt allerdings das Problem, wie du das Programm wieder beendet kriegst, wenn der Benutzer weiterarbeiten will - und wie schnell dein Resourcen-"Fresser" ;) dieselben wieder hergibt :? das könnte nämlich schonmal etwas dauern, bis das passiert ist und dann so unschöne Lags geben... :nixweiss:

Eigentlich ist für sowas das Betriebssystem selbst verantwortlich: nennt sich Prozesspriorität... :think:

cu
Narses


*Knust* - Mo 14.07.08 20:25

@Narses:
:P
Ich glaube du weißt, was ich meine ^^

@Yogu:
Danke, ich werds ma probieren aber erstma ohne Hooks, ist mir im Moment zu kompliziert...:P


mfg

Knust


matze - Mo 14.07.08 21:19

Schau doch mal hier: Da hatte ich mal einen Code gepostet, der genau das macht:
http://www.delphi-forum.de/topic_Wie+verhaelt+sich+dieser+Code+_34072.html