LRESULT keyboardHook(INT nCode,WPARAM wParam,LPARAM lParam)
{
std::cout << "HOOK!!\n";
return(CallNextHookEx(hhook, nCode, wParam, lParam));
}
hhook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)keyboardHook,::GetModuleHandle(NULL),0);
LRESULT keyboardHook(INT nCode,WPARAM wParam,LPARAM lParam)
{
std::cout << "HOOK!!\n";
return(CallNextHookEx(hhook, nCode, wParam, lParam));
}
hhook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)keyboardHook,::GetModuleHandle(NULL),0);
MSG aMessage; while (true) { if (PeekMessage(&aMessage,GetConsoleWindow(),0,0,PM_NOREMOVE)==0) break; if (aMessage.message==WM_HOTKEY) { PeekMessage(&aMessage,GetConsoleWindow(),0,0,PM_REMOVE); std::cout << "HOTKEY!!!\n"; break; } std::cout << "MESSAGE!!!\n"; TranslateMessage(&aMessage); DispatchMessage(&aMessage); }
#define WIN32_LEAN_AND_MEAN#include <windows.h>#include <string>using std::wstring;void ConPrint(const wstring &text){ const wstring text_nl = text + L"\n"; DWORD written = 0; WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), text_nl.c_str(), text_nl.length(), &written, NULL);}int __stdcall WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show){ // Start up AllocConsole(); ConPrint(L"--- Start up ---"); // Register hot key (CTRL+B in this case) if (RegisterHotKey(NULL, 1, MOD_CONTROL, 'B')) { ConPrint(L"Hotkey registration succeeded."); } else { ConPrint(L"Hotkey registration failed, exiting..."); MessageBox(NULL, L"Pressing OK will close the console...", L"Hotkey example", MB_OK | MB_ICONINFORMATION); FreeConsole(); return -1; } // Main loop MSG msg = {0}; while (GetMessage(&msg, NULL, 0, 0) != 0) { TranslateMessage(&msg); DispatchMessage(&msg); // We got a hotkey message! if (msg.message == WM_HOTKEY) { ConPrint(L"Nice, CTRL+B pressed! Exiting..."); break; } else if (msg.message == WM_QUIT) { break; } } // Clean up ConPrint(L"--- Closing ---"); UnregisterHotKey(NULL, 1); MessageBox(NULL, L"Pressing OK will close the console...", L"Hotkey example", MB_OK | MB_ICONINFORMATION); FreeConsole(); return 0;}
PeekMessage(&aMessage, NULL, 0, 0, PM_NOREMOVE);
RegisterHotKey(NULL,1,MOD_WIN,'a'); MSG aMessage; while (true) { if (PeekMessage(&aMessage,NULL,0,0,PM_NOREMOVE)==0) break; if (aMessage.message==WM_HOTKEY) { PeekMessage(&aMessage,NULL,0,0,PM_REMOVE); std::cout << "HOTKEY!!!\n"; break; } std::cout << "MESSAGE!!!\n"; TranslateMessage(&aMessage); DispatchMessage(&aMessage); }
MSG aMessage = {0};PeekMessage(&aMessage, NULL, 0, 0, PM_NOREMOVE);while (aMessage.message != WM_QUIT){ if (PeekMessage(&aMessage, NULL, 0, 0, PM_REMOVE) != 0) { switch (aMessage.message) { case WM_HOTKEY: ConPrint(L"Hotkey!"); break; default: break; } } else { // Do other stuff not related to messages }}
Quote:
MOD_WIN
Either WINDOWS key was held down. These keys are labeled with the Microsoft Windows logo. Keyboard shortcuts that involve the WINDOWS key are reserved for use by the operating system.