Выяснил, где у меня подтормаживает.
При отладке дебаггером, тормозят две строчки PeekMessage и GetMessage. Причем ТОЛЬКО если есть хук, даже пустой, установленный моей программой. Тормозят где-то по 2-3 секунды каждая, потом программа идет далее.Код:if (PeekMessage(&msg, NULL, 0, 0, 0)) { if (GetMessage(&msg, NULL, 0, 0)) { // Получить сообщение TranslateMessage(&msg); // Если сообщение не QUIT, DispatchMessage(&msg); // оттранслировать его окну } else SysExit(); // Иначе выйти закрыв все устройства }
---------- Post added at 14:15 ---------- Previous post was at 14:09 ----------
Думаю, что дело в хуке.
В режиме, когда подвисают PeekMessage и т.д. (а это когда активно консольное окно эмулятора), функция хука, хотя и установлена, ПЕРЕСТАЕТ работать. Это определяется просто - печатаю в специальное окно сообщение 'Hool action', когда хук вызывается. Так вот в этом режиме оно перестает печататься. Это значит, что функция хука пропадает, и возможно на ней все и подвисает.
---------- Post added at 14:17 ---------- Previous post was at 14:15 ----------
Обработчик хука таков:
Подвисает при активном консольном окне хоть с со строчкой printf, хоть без нее. И прекрасно работает при переключении на окно эмулятора.Код:LRESULT CALLBACK KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam) { printf("Hook action\n"); return CallNextHookEx(hhKeyboardHook, nCode, wParam, lParam); }
Инициализация хука такая:
hhKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHook, hInst, 0); // Установить глобальный хук клавиатуры




Ответить с цитированием