Я пробовал некоторые вещи с перехватчиками, и я не понимаю, почему перехватчики должны использоваться с очередью сообщений
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.
Цикл выполняется только тогда, когда я отправляю сообщение о выходе PostThreadMessage(id, WM_QUIT, 2323, NULL);
, поэтому я не понимаю, что он делает, кроме ожидания, есть ли какая-то внутренняя обработка?
Связанный:
C ++ SetWindowsHookEx WH_KEYBOARD_LL Правильная настройка
Как я могу установить хук CBT в окне консоли Win32?