Seite 2 von 2
Re: Key und Mouse Erkennung.
Verfasst: 28.12.2017 22:27
von tft
Aber ein Beispiel das funktioniert wäre natürlich nett ...

Re: Key und Mouse Erkennung.
Verfasst: 28.12.2017 22:28
von RSBasic
Danke für deine ausführliche Beschreibung deines Vorhabens.
Dann ist das Hooken nicht die Lösung, die du suchst, sondern:
Damit kannst du herausfinden, wie lange der Computer nicht mehr verwendet wurde. Mit Hilfe der WinAPI-Funktion
GetLastInputInfo_() kannst du die
Idle-Zeit ermitteln. D.h. wenn der Benutzer die Tastatur und/oder die Maus z.B. seit 15 Sekunden (oder eine andere Zeit) nicht benutzt hat, dann gibt dir die Funktion denselben Wert zurück. Du kannst in deiner Anwendung diese Funktion regelmäßig abfragen und wenn der Wert sich ändert, dann weißt du, dass der Benutzer gerade am PC ist und z.B. einen Brief schreibt.
Re: Key und Mouse Erkennung.
Verfasst: 28.12.2017 23:01
von tft
Hallo,
danke .. ich denke das ist genau was ich brauche. Funktioniert super.
Dann sollte es doch auch möglich sein auf ähnliche weise die Tasten Codes zu ermitteln.
Unabhängig davon das ich es jetzt nicht brauche. Aber zum steuern des Hintergrund Programmes
mit den F Tasten zum beispiel wäre das nützlich.
Während ich hier schreibe teste ich das gleich und stelle Fest. Die Sache funktioniert genauso wie es soll.
Allerdings hat sich da bei mir ein Denkfehler eingeschlichen. Das Hintergrund Programm steuert über einen
Externe Tastatur Emulation (Arduino LEONARDO) eines von 8 Steuer Programme die Verschieden 3D Modelle
Bewegen. Durch diese Vorgehensweise wird der LastInfo Eintrag jedesmal zurück gesetzt, was natürlich so sein muss.
Da ja irgendein Fenster immer den Fokus hat.
Je mehr ich darüber nachdenke ... desdo mehr komme ich zu dem Schluss, das sich da der Hund selber in den Schwanz beiss.
Gruss TFT
Re: Key und Mouse Erkennung.
Verfasst: 28.12.2017 23:06
von tft
lässt sich feststellen von welchem Device die Eingaben kommen? Dann könnte ich das Diferenzieren und nur auf eingaben Reagieren die nicht vom eigenen Device stammen.
Re: Key und Mouse Erkennung.
Verfasst: 29.12.2017 11:01
von RSBasic
Wenn das Fenster im Hintergrund ist, dann kannst du nur mit einem Keyboard-Hook die Keycodes ermitteln.
Wenn das Fenster im Vordergrund aktiv ist, dann hast du viel mehr Möglichkeiten. Da gibt es
GetAsyncKeyState_() (zum Abfragen einer bestimmten Taste) oder im Callback/in der Eventschleife mit
#WM_KEYDOWN und EventwParam().
Mit GetLastInputInfo_() kannst du nur ermitteln, ob irgendwas gedrückt oder die Maus verwendet wurde.
Aber wenn du nur einen Vorgang hast, der nur ausgeführt und fortgesetzt werden soll, wenn am PC nichts gemacht wird, dann sollte GetLastInputInfo_() für dein Vorhaben ausreichen.
Genau so machen einige Antivirenprogramme ebenfalls. Sobald der PC mal unbenutzt ist, dann werden ein paar Dinge im Hintergrund erledigt.
Eine Methode, um zu ermitteln, von welchem Eingabegerät bzw. von welcher Tastatur die jeweilige Eingabe kam, ist mir nicht bekannt.
Hier noch, falls es dir weiterhilft, ein Beispielcode zum Ermitteln des aktuell aktiven Fensters:
Code: Alles auswählen
EnableExplicit
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Debug "Da dieses Fenster gerade im Vordergrund ist, wird die Handle-Nummer dieses Fensters angezeigt..."
Debug GetActiveWindow_()
Debug "Zum Vergleich hier noch die Handle-Nummer dieses Fensters: " + Str(WindowID(0))
;Wenn du weitere Informationen eines fremden Fensters ermitteln möchtest (Titel, Klassenname, Position, ...), frag nach.
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Oder falls du ermitteln möchtest, wann ein Fokuswechsel stattfand:
http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Re: Key und Mouse Erkennung.
Verfasst: 29.12.2017 16:55
von Imhotheb
GetAsyncKeyState_() liefert immer zurück ob eine bestimmte Taste gedrückt wurde, egal welches Fenster / welche Anwendung gerade aktiv ist. (Wird bei vielen Cheats benutzt). Allerdings muss dann jede benötigte Taste einzeln abgefragt werden.
Re: Key und Mouse Erkennung.
Verfasst: 29.12.2017 23:56
von tft
Hallo,
in Kombination könnte das vielleicht helfen ....... ich werde mal Probieren. Auf jeden Fall danke an alle....und ein gutes Jahr 2018
TFT
Re: Key und Mouse Erkennung.
Verfasst: 30.12.2017 14:46
von GPI
Ich würde da aber eine andere Methode vorschlagen:
Überprüfe die CPU-Last!
Sobald ein anderer Prozess auf einmal mehr Rechenleistung braucht, dann fahre deinen Thread zurück.
Re: Key und Mouse Erkennung.
Verfasst: 30.12.2017 15:03
von tft
Hallo,
coole Idee ..... kannst du mir auch sagen wie ich an die Daten zur CPU Last ran komme. Die Beispiele die ich gefunden habe sind so alt ..... das geht unter W10 nicht mehr. Andererseits wären System infos ala HW_Monitor schon cool.
Gruss TFT