Seite 1 von 1
AnyKey Systemweit
Verfasst: 12.08.2013 23:53
von TheCube
Hallo,
ich habe da ein Minitool geschrieben, das Mousemove-Events absetzt um (temporär) einen Bildschirmschoner mit Passworteingabe
zu verhindern der nicht verstellt werden kann/darf. Soweit gelöst und funktioniert.
Das Programm "existiert" nur als Trayicon mit hidden Window.
Nach Nichtbenutzung des Rechners für 1 Stunde (keine Maus und Keyboard Inputs) möchte ich das Programm beenden;
Mausüberwachung ist ja kein Problem mit PB-Boardmitteln (DesktopMouseX/Y())
Aber: Wie mache ich die Abfrage eines systemweiten Anykey am einfachsten ?
GetAsynckeystate, Tastaturhook (ungern), #WM_Keydown, oder, oder ?
Im Prinzip eine globale Abfrage wie bei Bildschirmschonern, die sich bei jeglicher Tastatur und/oder Mausaktivität beenden.

Re: AnyKey Systemweit
Verfasst: 13.08.2013 12:28
von NicTheQuick
Wenn ein Bildschirmschoner mal läuft, ist er ja im Vordergrund und kann dann natürlich Tastatur- und Mauseingaben erfassen. Im Grunde geht es nicht anders als per Keyboardhook oder GetAsyncKeyState unter Windows.
Re: AnyKey Systemweit
Verfasst: 13.08.2013 13:19
von TheCube
Ja ok, danke. Dann werde ich mich mal für eins von beiden entscheiden.
Per Keyboard-Hook ist es eigentlich ganz elegant, aber (nach meinem Empfinden)
ein tieferer Eingriff ins System. Nicht das noch Kaspersky & Co meinen das mein
Programm Malware oder ein Keylogger wäre .....
Per GetAsyncKeyState hat nur den Schönheitsfehler, das man alle Tasten
einzeln abklappern muss. (#VK_Return, VK_Escape, #VK_XXXXX, ... , usw.)

Re: AnyKey Systemweit
Verfasst: 13.08.2013 13:47
von NicTheQuick
Re: AnyKey Systemweit
Verfasst: 13.08.2013 16:58
von TheCube
Guter Tipp, aber GetKeyboardState scheint nur zu funktionieren, wenn das eigene Programm den Fokus hat.
(Nur leider habe ich den ja fast nie ... )
Werde mal kurzfristig einen kleinen Beispielcode erstellen, da diskutiert es sich besser ....
Re: AnyKey Systemweit
Verfasst: 13.08.2013 19:07
von Sicro
Nicht Systemweit, aber für die aktuelle Sitzung, also das gerade aktive Benutzerkonto.
Code: Alles auswählen
; http://msdn.microsoft.com/en-us/library/windows/desktop/ms646302%28v=vs.85%29.aspx
Structure LASTINPUTINFO
cbSize.l
dwTime.l
EndStructure
Define.LASTINPUTINFO plii\cbSize = SizeOf(LASTINPUTINFO)
Delay(5000)
If GetLastInputInfo_(@plii)
Debug "Der Computer wurde nicht mehr bedient seit: " + Str(GetTickCount_() - plii\dwTime) + " Millisekunden"
Else
Debug "Abfrage fehlgeschlagen"
EndIf
Re: AnyKey Systemweit
Verfasst: 14.08.2013 00:38
von TheCube
Das ist ja mal genial, danke fürs teilen.
Das erschlägt ja alles auf einmal:
Mausmove, Maustasten und jeden Key auf der großen Tastatur .... der ultimative Anykey.
Ich rufe GetLastInputInfo_(@plii) z.B. ganz entspannt alle paar Sekunden per AddWindowTimer auf
und verpasse trotzdem nichts.
Achso: Mit Systemweit meinte ich auch natürlich die aktive Sitzung, nur eben egal in welchem
gestarteten Programm ich mich gerade herumtreibe ...
Edit: Ich sollte mich mehr in RS-Basic´s WinAPI-Library tummeln ... einfach "Letzte" suchen.
