【发布时间】:2015-07-20 02:55:20
【问题描述】:
目标:我想知道用户是否按下了一些我想知道的热键,就像我想知道他/她在 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);
}
感谢您的帮助!!
【问题讨论】:
-
这几乎没有意义。你能退后一步告诉我们你的实际目标吗?我很确定您选择了错误的解决方案。
-
我想知道用户是否按下了一些我想知道的热键,比如我想知道他/她在 chrome 上按 Ctrl + N
-
RegisterHotKey 与什么有什么关系?这与这里无关。你需要听 CTRL 下降,然后 N 下降。
-
所以我第一次尝试错误的方式。感谢您给我评论。有什么想法可以让我知道如何听 CTRL 下降然后 N 继续。
-
只需检测钩子进程中的那些键。