У меня есть программа, которая устанавливает глобальную клавиатуру и обрабатывает нажатия клавиш.Это мой WinMain:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nCmdShow)
{
MSG msg;
logFile = fopen("C:\\keylog.txt", "w");
hKeyHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyEvent, GetModuleHandle(NULL), 0);
GetMessage(&msg, NULL, 0, 0);
UnhookWindowsHookEx(hKeyHook);
fclose(logFile);
return 0;
}
Так как он не создает никаких окон, он никогда не получит оконного сообщения, поэтому GetMessage остановит программу, и это очень мало на циклах ЦП.Однако, когда он обнаруживает нажатие определенной клавиши, я хочу, чтобы он вышел из программы.Я не могу передать сообщение, потому что оно не получит его.Если я сделаю что-то вроде:
while(State == true)
Sleep(500);
Сама программа и глобальный хук остановятся, и это нежелательно.Отключение (0) приводит к тому, что он потребляет неуправляемое количество циклов ЦП.
Итак, что является лучшей альтернативой для моей проблемы?Единственное, о чем я могу думать, - это пройти через регистрацию моего собственного класса окна и создать окно для получения сообщения, но, возможно, есть лучший способ?