Frage von X2ToP, 44

C# Tastendruck außerhalb des Forms erhalten?

Hallo liebe Community und liebe Programmierer! Ich möchte ein Ereignis abfangen; nämlich möchte ich 'blabla' ausführen, sobald die Taste PageUp gedrückt wird. Alles funktioniert wie geschmeidigt, jedoch nur, wenn der Form ausgewählt ist, während des drückens. Ist ja auch klar, es ist auch ein Form1_KeyDown Ereignis, jedoch möchte ich das Global, also auch das 'PageUp' empfangen, während der Benutzer im Browser oder in einem Game unterwegs ist. Wie ist dies zu ermöglichen? Mein Code:

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
        if (e.KeyCode == Keys.PageUp)
        {
           //Irgendwas ausführen
        }

        }

Dass das 'Form1_KeyDown' ist, weiß ich, jedoch gibt es denn nicht sowas wie ein allgemeines Keydown auch für außerhalb des Forms? Also wenn das Form minimiert u.a. nicht ausgewählt ist?

Vielen Dank schonmal!

Antwort
von PeterKremsner, 30

Hallo das ist leider nur schwer möglich und um den Aufruf der Windows COM API kommst du da leider nicht herum, hier ist ein Artikel in dem ein Code ist mit dem es Funktioniert.

https://blogs.msdn.microsoft.com/toub/2006/05/03/low-level-keyboard-hook-in-c/

in dem Programm werden die Nummern der Tasten in der Console ausgegeben.

Antwort
von Orsovai, 31

Hallo,

hier bietet sich eigentlich ein Dienst an, d.h. ein Windows Service. Musst Du ein WinForm haben?

Kommentar von X2ToP ,

Nein, auf dem Form steht eh nur : Start = PageUp

Habe noch nie mit so einem Service gearbeite.

Kommentar von Orsovai ,

Was soll bei Tastendruck geschehen? Also allzu simpel wird das nicht, das vorweg...

Kommentar von X2ToP ,

Wenn PageUp, dann soll eine Taste gedrückt gehalten werden, in dem Fall 'W', damit der Spieler in einem Spiel sich fortbewegt. Wenn PageDown, dann soll dies aufhören, zu drücken.

Sorry für die späte Antwort, konnte erst jetzt wieder on.

Habe eine Klasse zu dem gedrückt halten, ich denke das wird funktionieren.

Keine passende Antwort gefunden?

Fragen Sie die Community