(Erledigt)Key und Mouse Erkennung.

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag von tft »

Aber ein Beispiel das funktioniert wäre natürlich nett ... :-)
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag 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
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag 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.
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Imhotheb
Beiträge: 192
Registriert: 10.10.2014 13:14
Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
Wohnort: Wolfenbüttel

Re: Key und Mouse Erkennung.

Beitrag 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.
weil einfach einfach einfach ist ... mach' ich es anders
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag 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
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag 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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag 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
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Antworten