Frage von TheMiSta92, 38

Hotkeys in C# global abfangen, aber normal weitergeben?

Hallo zusammen,

Bin dabei einen kleinen Keyboard-Visualizer in C# zu machen.

Für das Assignen nutze ich die RegisterHotKey-Funktion:

RegisterHotKey(this, id, 0, (int)Keys.Q);   

Jetzt kann ich wunderbar durch die folgende Funktion abfangen wann die Taste gedrückt wird:

protected override void WndProc(ref Message m) {
    base.WndProc(ref m);
    if (m.Msg == 0x0312) {
        int hotKeyId = m.WParam.ToInt32();
        if (hotKeyId == /* something */) {
            // do smth()
        }
    }
}

Jetzt ist halt das Problem, dass die Taste zwar vom Programm abgefangen wird, aber halt tatsächlich abgefangen wird - sprich: die Taste wird abgefangen und nicht mehr am gedrückten Ort mehr. Also wenn ich Q assigne, wird Q visualiert, aber "funktioniert halt nicht im Browser" usw.

Gibt's ne Möglichkeit nach der Verarbeitung in der WndProc-Funktion der KeyPress wieder an das "System zurückzuleiten"?

Wäre toll wenn da jemand ne Idee hätte =)

Antwort
von okarin, 22

Nein gibt es nicht da du das natürlich  dem entsprechenden Fenster mitteilen müsstest und solche prozessübergreifende Manipulationen erlaubt Windows genau aus solchen Gründen nicht. Aber ich glaub mit hooks ist sowas möglich ohne das du die Nachrichten gleich klauen musst.

Kommentar von CrystalixXx ,

SetWindowsHookEx wäre dafür die API.

Keine passende Antwort gefunden?

Fragen Sie die Community