如何知道windows快捷键被哪个程序或则窗口截获了?
我的foobar不响应"shift+alt+5"快捷键,但是我不知道被哪个程序截获了。经常遇到这样的问题。想写个程序找出这个程序。不知道大家有没有办法?
下面这个似乎只能截获快捷键,但是不知道快捷键被哪些程序截获了。
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 + Alt14 ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0))15 //Esc + Alt16 || ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0))17 //Esc + Ctrl18 || ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0))19 //Ctrl + Space20 || (((GetKeyState(VK_CONTROL) & 0x8000) != 0) && (p->vkCode == VK_SPACE));21 break;22 }23 }24 return(Discard? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));25 }