设置的消息钩子会失效!

shan794462554 2016-08-15 05:10:17
static HWND  hwnd;  		// MainForm句柄
static HHOOK hKeyHook; // HOOK句柄

CKeyHook::CKeyHook(HWND hWnd)
{
hwnd = hWnd;
hKeyHook = SetWindowsHookEx( WH_KEYBOARD_LL,(HOOKPROC)_HookProc,GetModuleHandle(NULL),0);
}

//----------------------------------------------------------------------------------------------------
LRESULT CALLBACK CKeyHook::_HookProc(int code,WPARAM wParam,LPARAM lParam)
{
PKBDLLHOOKSTRUCT pKey ;

if((code==HC_ACTION) )
{
pKey = (PKBDLLHOOKSTRUCT)(lParam);
if((wParam==WM_KEYDOWN))
{
// pKey = (PKBDLLHOOKSTRUCT)(lParam);
if(VK_ESCAPE == pKey->vkCode )
{
PostMessage( hwnd,MYESC,wParam,pKey->vkCode);
return CallNextHookEx(hKeyHook,code,wParam,lParam);
}

//SHIFT + F12
if((GetKeyState(VK_CONTROL) < 0) && (GetKeyState(VK_MENU) < 0))
{
// pKey = (PKBDLLHOOKSTRUCT)(lParam);
PostMessage( hwnd,OTHER_BORD,wParam,pKey->vkCode);
return CallNextHookEx(hKeyHook,code,wParam,lParam);
}
//SHIFT + SPACE
if((GetKeyState(VK_SHIFT) < 0))
{
// pKey = (PKBDLLHOOKSTRUCT)(lParam);
PostMessage( hwnd,INSERT_SPACE,wParam,pKey->vkCode);
return CallNextHookEx(hKeyHook,code,wParam,lParam);
}
}
else if((wParam==WM_KEYUP))
{
if(VK_F6 == pKey->vkCode )
{
PostMessage( hwnd,CUTIMAGE,wParam,pKey->vkCode);

return CallNextHookEx(hKeyHook,code,wParam,lParam);
}
}
}

return CallNextHookEx(hKeyHook,code,wParam,lParam);
}

用消息钩子实现快捷键F6并对所有界面都有效,现在在调试阶段按F6键2到3次后消息钩子就失效了,这怎么解决?
...全文
175 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧