怎么知道windows快捷键被哪个程序或则窗口截获了
如何知道windows快捷键被哪个程序或则窗口截获了?
我的foobar不响应"shift+alt+5"快捷键,但是我不知道被哪个程序截获了。经常遇到这样的问题。想写个程序找出这个程序。不知道大家有没有办法?
下面这个似乎只能截获快捷键,但是不知道快捷键被哪些程序截获了。
------解决方案--------------------
实现很难。曾有过一个叫ghotkeys的开源软件,但是现在找不到了。
我的foobar不响应"shift+alt+5"快捷键,但是我不知道被哪个程序截获了。经常遇到这样的问题。想写个程序找出这个程序。不知道大家有没有办法?
下面这个似乎只能截获快捷键,但是不知道快捷键被哪些程序截获了。
- C/C++ code
1 BOOL installhook() 2 { 3 HINSTANCE hins=AfxGetInstanceHandle(); 4 HHOOK Hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyboardProc,hins,0); 5 return (BOOL)Hook; 6 } ///////////////////////////////////////////////////////////////////////////////// 01 LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam) 02 { 03 BOOL Discard = FALSE; 04 05 if (nCode == HC_ACTION) 06 { 07 switch (wParam) 08 { 09 case WM_KEYDOWN: case WM_SYSKEYDOWN: 10 case WM_KEYUP: case WM_SYSKEYUP: 11 PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam; 12 Discard= 13 //Tab + Alt 14 ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) 15 //Esc + Alt 16 || ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) 17 //Esc + Ctrl 18 || ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0)) 19 //Ctrl + Space 20 || (((GetKeyState(VK_CONTROL) & 0x8000) != 0) && (p->vkCode == VK_SPACE)); 21 break; 22 } 23 } 24 return(Discard? 1 : CallNextHookEx(NULL, nCode, wParam, lParam)); 25 }
------解决方案--------------------
实现很难。曾有过一个叫ghotkeys的开源软件,但是现在找不到了。