Frage

Ich Einhaken Tastatur in der Anwendung. Voraussetzung ist dabei, in alle Threads Tastatur einzuhaken.

I verwendet SetWindowsHookEx API

SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)::KeyboardHookProc, hInst, 0);

Der Haken wird für alle Threads im Prozess erstellt. Das funktioniert gut, bis Thread Aufruf existiert .Als sobald Thread beendet Hakensperre Arbeits aufrufen.

Gibt es eine Möglichkeit auf Prozess Haken anstatt Threads ausgeführt.

War es hilfreich?

Lösung

Das Kleingedruckte in der SDK-Dokumentation für LowLevelKeyboardProc ist von entscheidenden Bedeutung:

Dieser Haken ist im Kontext des Threads aufgerufen, die es installiert. Der Anruf wird durch das Senden einer Nachricht an den Faden gemacht, dass der Haken montiert. Daher ist der Faden, der den Haken installiert muss eine Nachrichtenschleife hat.

Mit anderen Worten, müssen Sie den Faden am Leben halten und das Gewinde muss eine Nachrichtenschleife pumpen. Das Verhalten, das Sie jetzt sehen, ist ganz nach Design.

Andere Tipps

Wie Per MSDN, WH__KEYBOARD ___ LL ist global nicht anwendungsspezifisch angelegt.

Wenn Sie Hook installieren für eine prozessspezifische Threads verwenden WH ___ KEYBOARD .

Installieren Sie einfach den Haken in der Hauptfunktion. Wenn Sie es nur, wenn ein bestimmter Thread ausgeführt wird, können Sie ein flüchtiges Flag verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top