Я пробовал некоторые вещи с помощью перехватчиков, и я не понимаю, почему крючки должны использоваться с очередью сообщений
hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hook);
Почему это не работает?
hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, 0);
cin >> aKey;
UnhookWindowsHookEx(hook);
Использование повышающих потоков, и барьер тоже не работает. Почему нельзя ожидать ожидания между крюком и отцеплением другим способом?
EDIT:
Я сделал ошибку, когда создал этот образец, я создаю крюк WH_KEYBOARD_LL, а не WH_KEYBOARD (я не думаю, что это имеет большое значение)
Также цикл никогда не выполняет только ожидания функции GetMessage.
Цикл выполняется только тогда, когда я отправляю сообщение quit PostThreadMessage(id, WM_QUIT, 2323, NULL);
, поэтому я не понимаю, что он делает, помимо ожидания, есть ли какая-то внутренняя обработка?
СВЯЗАННЫЕ: