Warum muss der SetWindowsHookEx verwendet werden, die mit einer windows-message queue

Ich versuche schon einige Dinge mit Haken, und ich verstehe nicht, warum die Haken müssen verwendet werden, mit einer message queue

hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
        TranslateMessage(&msg);
        DispatchMessage(&msg);
}
UnhookWindowsHookEx(hook);

Warum nicht so etwas wie diese Arbeit ?

hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, 0);
cin >> aKey;
UnhookWindowsHookEx(hook);

Mit boost threads, und eine Barriere, die nicht funktioniert entweder. Warum kann nicht die Wartezeit zwischen den Haken und lösen Sie getan werden, in einer anderen Art und Weise ?

EDIT:

Ich habe einen Fehler gemacht als ich dieses Beispiel erstelle ich ein WH_KEYBOARD_LL Haken, WH_KEYBOARD nicht, (ich glaube nicht, dass es einen großen Unterschied macht)

Auch die Schleife nie ausgeführt, nur wartet auf die GetMessage-Funktion.

Die Schleife wird nur ausgeführt, wenn ich die quit-Nachricht PostThreadMessage(id, WM_QUIT, 2323, NULL); so verstehe ich nicht, was es zu tun neben warten, gibt es einige interne Verarbeitung ?

VERWANDTE:

C++ SetWindowsHookEx WH_KEYBOARD_LL Richtige Setup

Wie kann ich ein CBT-hook auf ein Win32-Konsole-Fenster?

InformationsquelleAutor Ha11owed | 2011-09-18

Schreibe einen Kommentar