(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:

(Erledigt)Key und Mouse Erkennung.

Beitrag von tft »

Hallo,

Mein ChiChan Projekt wächst und gedeit. Aber je mehr ich Code, desdo mehr dinge wollen nicht wie ich wohl will.

Um alle Actionen abzubrechen muss ich auf Mouse und Tastatur änderungen reagieren. Egal welches Fenster gerade
aktiv den Fokus hat, das betrifft vor allem Fenster die nicht von PB geöffnet wurden.
Frühere Windows Versionen haben immer alle Nachrichten auf den Stack gelegt. So musste man immer
Prüfen welche Nachricht für wehn gedacht ist. Jetzt bekomme ich über das Event System nur nachrichten die entweder Mit PostMassage
gesendet wurden oder wirklich im Fenster entstanden sind. Was ansich ja auch sinnvoll ist. Aber ich muss das Laufenden Programm immernoch
Steuern können, auch wenn es den Fokus verliert.

Jemand eine Idee ??? Ich nämlich nicht. Ausser ein Externes Hardware Signal :-) Alt F4 :-)

Gruss TFT
Zuletzt geändert von tft am 30.12.2017 16:54, insgesamt 1-mal geändert.
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 »

Möchtest du systemweit die Maus- und Tastatureingaben abfragen?
Wenn ja:
Tastatur: http://www.rsbasic.de/aktualisierung/wi ... ardHook.pb
Maus: http://www.rsbasic.de/aktualisierung/wi ... se-Hook.pb
Die Zeile "ProcedureReturn 1" kannst du aus den Beispielcodes entfernen.
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,

Verstehe ich das richtig, wenn ich sage. Der Hook setzt sich zwischen Tastaturtreiber und Anwendung?
Dann muss ich nur den Hook auswerten um zu wissen welche Tasten gedrückt wurden?
Das Mause Beispielt gefriert den Rechner ganz fürchterlich ein :-)

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
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Key und Mouse Erkennung.

Beitrag von Bisonte »

tft hat geschrieben:Das Mause Beispielt gefriert den Rechner ganz fürchterlich ein :-)
Dann hast du da irgendwas verkehrt gemacht. Mit Code kann man eher helfen....
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag von RSBasic »

@tft
Ja
tft hat geschrieben:Das Mause Beispielt gefriert den Rechner ganz fürchterlich ein :-)
Das tut mir leid. Die Zeile "ProcedureReturn 1" bzw. den kompletten Case-Bereich hast du aber entfernt oder?
Ansonsten hatte ich das Problem noch nie.
Vielleicht liegt es am Antivirenprogramm, welches die kompilierte Anwendung genauer prüft, weil ein Keyboard-/Mouse-Hook kann auch als Keylogger verwendet werden. Deshalb kann es möglicherweise sein, dass einige Antivirenprogramme sehr empfindlich darauf reagieren.
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,

also so funktionert das nicht wie ich es Brauche. Die Idee scheint der Richtige weg zu sein .... nur die Steine sind noch etwas hoch.
Sagen wir mal ich habe das Beispiel gestartet. Dann sollte doch wenn der Editor von PB den Fokus hat. Das Programm beändet werden
wenn ich dort die ECS Taste drücke? oder ?

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
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Key und Mouse Erkennung.

Beitrag von RSBasic »

Geht es um das Mouse-Beispiel? Da sollst du die Escape-Taste drücken, wenn das Beispielfenster den Fokus hat. Da sollst du nicht woanders klicken, sondern nur beispielhaft auf den Button innerhalb des Beispielfensters.
Wenn du auf den PB-Editor klickst, dann kann das Beispielfenster nicht mehr auf Esc prüfen, weil das Beispielfenster im Hintergrund ist.
Die Zusatzabfrage der Escape-Taste hat aber nichts mit dem Beispielcode zu tun. Ist nur dazu da, damit man das Fenster mit der Escape-Taste schließen kann (natürlich solange das Fenster den Fokus hat), weil man ja nicht mit der linken Maustaste auf den X-Button in der Titelleiste klicken kann.

Anderes/Besseres/Einfaches Beispiel:

Code: Alles auswählen

EnableExplicit

Define hhkLLMouse

Procedure MouseKeyHook(nCode, wParam, lParam)
  Select wParam
    Case #WM_LBUTTONDOWN
      Debug "Linke Maustaste wird gedrückt."
    Case #WM_LBUTTONUP
      Debug "Linke Maustaste wurde losgelassen."
  EndSelect
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam)
EndProcedure

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
  hhkLLMouse = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseKeyHook(), GetModuleHandle_(0), 0)
  
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

UnhookWindowsHookEx_(hhkLLMouse)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Key und Mouse Erkennung.

Beitrag von ccode_new »

Hallo tft!

Denke ich hierbei richtig:

->Du suchst eine Lösung, wenn dein Programm (irgendein Fenster davon) den Focus verliert ?
->Also quasi ein Prozess (Unter-Thread oder eigenständiges Programm (Abfrage-Server)) der bei Focusverlust alle/bestimmte Tastaurereignisse abfängt und an dein Programm weiterleitet ?

Oder bin ich auf dem Holzweg?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
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,

nein der Holzweg ist schon ganz richtig. Ich möchte von meinem Programm aus wissen. Egal ob es den Fokus hat oder nicht. Welche Tasten gedrückt werden und was die Mouse gerade macht, wobei mir die Tatsache reicht. die genauen Tastenangaben brauche ich nicht. Ich brauche das als Abbruchbedingung für Akionen die mein Laufendes Programm im Hintergrund erledigen soll.
Als Beispiel.
Am Rechner wird gerade nichts gemacht ......... das Hintergrundprogramm startet einen Rechen Intensiven Thread/Prozess, ohne jegliche Fenster.
Jetzt benutzt der Anwender Word um einen Brief zu schreiben. Mein Hintergrund Programm muss jetzt auf Grund der Tasten oder Mouse Eingabe seine
Arbeit unterbrechen und warten bis eine gewisse Zeit wider nichts Passiert, und dann an seiner Arbeit weitermachen.
Auf Verlieren des Fokus kann ich nicht abfragen da es kein Fenster gibt. Und es funktioniert sowiso nicht immer da das Hintergrund Programm den Fokus auch nicht gehabt haben muss um zu starten selbst wenn ich ein Dummy Fenster erstelle. Denn der Fokus musss ja beim Aktiven Fenster bleiben.

Es ist keine gewöhnliche Aufgabe ...... ich will auch nicht das mir jemand einen Code schreibt. Bei der Stufe muss ich das Verstehen können um damit weiter zu arbeiten.

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 »

Da fällt mir ein ... früher konnte man einfach ein OpenWindowedScreen im Hintergrund öffnen und damit arbeiten.
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