Hallo zusammen,
das Thema KeyHook ist wohl teils brisant, da es missbraucht werden kann, um damit unschöne Programme zu schreiben ... ich möchte hiermit versichern, dass ich das nicht vor habe.
Mein Problemchen ist nämlich folgendes: Meine CPU ist in die Jahre gekommen und wenn ich Spiele wie GTA offen habe und der PC meint, den GTA-Prozess zu himmeln ("Keine Rückmeldung" wird wohl im Task-Manager stehen), dann friert das Spiel ein und dank des Vollbild-Modus kann ich den Task-Manager nicht öffnen, um den Prozess zu killen.
Somit habe ich mir gedacht, dass ich mir mal wieder VS herunter lade, auch um zu gucken, wie viel von VB.Net hängen geblieben ist. Den Code für das Abfangen des Tastaturdrucks habe ich mir im Internet zusammen gesucht, genauso den für das Beenden des Prozesses. Das Programm läuft einwandfrei, wenn ich F1 drücke, dann wird der GTA-Prozess beendet. Nur ist mir folgendes aufgefallen: Öffne ich GTA dann noch mal wieder, so kann mein Programm anscheinend die Keys nicht mehr abfangen. Starte ich mein "selbst geschriebenes" Programm neu, dann geht das jedoch wieder (F1 killt dann wieder den GTA-Prozess).
Die Abfrage des Tastendrucks erfolgt über SetWindowsHookEx. Dieses ist mit dem, "das da zu gehört", in einer eigenen Klasse untergeordnet, das die zwei Events KeyDown und KeyUp ausgibt.
Ständig das kleine Programm neu zu starten, wenn ich GTA gestartet habe, muss nicht sein. Meine Frage ist nun, wie man wieder die Tastaturabfrage durchführen kann, wenn ein Spiel wie GTA den Fokus neu bekommen hat. Was ich vermute ist, dass GTA auch Hooks registriert und mein KeyboardProc dann zweitrangig wird, wenn das neu gestartete GTA den Fokus hat.
Gruß Michael
das Thema KeyHook ist wohl teils brisant, da es missbraucht werden kann, um damit unschöne Programme zu schreiben ... ich möchte hiermit versichern, dass ich das nicht vor habe.
Mein Problemchen ist nämlich folgendes: Meine CPU ist in die Jahre gekommen und wenn ich Spiele wie GTA offen habe und der PC meint, den GTA-Prozess zu himmeln ("Keine Rückmeldung" wird wohl im Task-Manager stehen), dann friert das Spiel ein und dank des Vollbild-Modus kann ich den Task-Manager nicht öffnen, um den Prozess zu killen.
Somit habe ich mir gedacht, dass ich mir mal wieder VS herunter lade, auch um zu gucken, wie viel von VB.Net hängen geblieben ist. Den Code für das Abfangen des Tastaturdrucks habe ich mir im Internet zusammen gesucht, genauso den für das Beenden des Prozesses. Das Programm läuft einwandfrei, wenn ich F1 drücke, dann wird der GTA-Prozess beendet. Nur ist mir folgendes aufgefallen: Öffne ich GTA dann noch mal wieder, so kann mein Programm anscheinend die Keys nicht mehr abfangen. Starte ich mein "selbst geschriebenes" Programm neu, dann geht das jedoch wieder (F1 killt dann wieder den GTA-Prozess).
Die Abfrage des Tastendrucks erfolgt über SetWindowsHookEx. Dieses ist mit dem, "das da zu gehört", in einer eigenen Klasse untergeordnet, das die zwei Events KeyDown und KeyUp ausgibt.
Ständig das kleine Programm neu zu starten, wenn ich GTA gestartet habe, muss nicht sein. Meine Frage ist nun, wie man wieder die Tastaturabfrage durchführen kann, wenn ein Spiel wie GTA den Fokus neu bekommen hat. Was ich vermute ist, dass GTA auch Hooks registriert und mein KeyboardProc dann zweitrangig wird, wenn das neu gestartete GTA den Fokus hat.
Gruß Michael