WINAPI 键盘检测其他应用程序热键
WINAPI keyboards detect other application hotkeys
目标:我想知道用户是否按下了一些我想知道的热键,就像我想知道的那样 he/she 在 chrome 上按 Ctrl + N
我尝试检测应用程序热键,例如 chrome Ctrl + N 打开新选项卡。
winapi 如何检测到这个?
我看过一些文章说WM_KEYUP + WM_KEYDOWN,但是wParam一次可以得到一个WM_KEYUP或WM_KEYDOWN,如何实现?
int main(int argc, char *argv[])
{
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProc, hInstance, 0);
hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, hInstance, 0);
while (GetMessage(&message,NULL,0,0)) {
TranslateMessage( &message );
DispatchMessage( &message );
}
UnhookWindowsHookEx(hHook);
UnhookWindowsHookEx(hMouseHook);}
KeyBoardHookProc(int nCode, WPARAM wParam, LPARAM lParam){
KBDLLHOOKSTRUCT cKey = *((KBDLLHOOKSTRUCT*)lParam);
.................
if(wParam == WM_KEYUP)
{
kp.HandlekeyboardInfo(lpszName, buffer);
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
感谢帮助!!
有几种不同的方法可以做到这一点。最简单的方法可能是在您的应用程序中注册一个热键,然后让 windows 在按下组合键时通知您。
另一种方法是注册键盘钩子。所有按键都将传递给您的应用程序,但您必须确定按下了哪些键。如果你走这条路,一定要调用 CallNextHookEx()。
目标:我想知道用户是否按下了一些我想知道的热键,就像我想知道的那样 he/she 在 chrome 上按 Ctrl + N
我尝试检测应用程序热键,例如 chrome Ctrl + N 打开新选项卡。
winapi 如何检测到这个?
我看过一些文章说WM_KEYUP + WM_KEYDOWN,但是wParam一次可以得到一个WM_KEYUP或WM_KEYDOWN,如何实现?
int main(int argc, char *argv[])
{
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProc, hInstance, 0);
hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, hInstance, 0);
while (GetMessage(&message,NULL,0,0)) {
TranslateMessage( &message );
DispatchMessage( &message );
}
UnhookWindowsHookEx(hHook);
UnhookWindowsHookEx(hMouseHook);}
KeyBoardHookProc(int nCode, WPARAM wParam, LPARAM lParam){
KBDLLHOOKSTRUCT cKey = *((KBDLLHOOKSTRUCT*)lParam);
.................
if(wParam == WM_KEYUP)
{
kp.HandlekeyboardInfo(lpszName, buffer);
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
感谢帮助!!
有几种不同的方法可以做到这一点。最简单的方法可能是在您的应用程序中注册一个热键,然后让 windows 在按下组合键时通知您。
另一种方法是注册键盘钩子。所有按键都将传递给您的应用程序,但您必须确定按下了哪些键。如果你走这条路,一定要调用 CallNextHookEx()。