Global genvejstast
Hej!Jeg skal have lave en genvejstast i mit program, som virker lige meget hvilket program der har fokus. Altså hvis man fx trykker CTRL+ALT+S, så skal mit program opfange dette tastetryk.
Jeg ved ikke om det er den rigtige måde at gøre det på, men jeg ville løse problemet med et hook.. Problemet er bare, at når programmet har fokus kan det godt fange tastetryk, men hvis man deaktiverer det og aktiverer det igen, så kan det ikke fange tastetryk!
Kode(WIN32API):
---
HHOOK hook;
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
if(code>=0) {
if(wParam == VK_RETURN)
MessageBox(0, "You pressed enter!", 0, 0);
}
return CallNextHookEx(hook, code, wParam, lParam);
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg) {
case WM_CREATE:
{
hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandle(0), 0);
if(!hook) {
MessageBox(hwnd, "Hook failed!",0,0);
PostQuitMessage(0);
}
return 0;
}
case WM_DESTROY:
case WM_CLOSE:
UnhookWindowsHookEx(hook);
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
---
Der sker ikke andet end initialization af vindue i WinMain.
Hvis man kan gøre det på en nemmere måde end med et hook er jeg naturligvis også interesseret i at høre om det.