Aktuelle Zeit: 25.04.2019 00:12

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: (Erledigt)Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 14:55 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

_________________
TFT

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Zuletzt geändert von tft am 30.12.2017 16:54, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 14:59 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
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.

_________________
BildBildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 19:12 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 19:19 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
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 5.70 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce GTX 980 X4 Ultra | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 19:24 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
@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.

_________________
BildBildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 19:37 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 19:50 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
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:
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)

_________________
BildBildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 20:35 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 22:17 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Key und Mouse Erkennung.
BeitragVerfasst: 28.12.2017 22:21 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
Da fällt mir ein ... früher konnte man einfach ein OpenWindowedScreen im Hintergrund öffnen und damit arbeiten.

_________________
TFT

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye