首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么知道windows快捷键被哪个程序或则窗口截获了

2012-04-24 
如何知道windows快捷键被哪个程序或则窗口截获了?我的foobar不响应shift+alt+5快捷键,但是我不知道被哪

如何知道windows快捷键被哪个程序或则窗口截获了?

我的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 + 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    }


[解决办法]
实现很难。曾有过一个叫ghotkeys的开源软件,但是现在找不到了。

热点排行