Autor Beitrag
*Knust*
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Mo 14.07.08 20:04 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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 an.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 14.07.08 20:16 
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

_________________
There are 10 types of people - those who understand binary and those who don´t.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 14.07.08 21:19 
Schau doch mal hier: Da hatte ich mal einen Code gepostet, der genau das macht:
www.delphi-forum.de/...ser+Code+_34072.html

_________________
In the beginning was the word.
And the word was content-type: text/plain.