为什么当前程序(有键盘钩子)切换到另一个程序然后按键,再切回来,键盘钩子就不起作用了?
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)
{
case 'A':
AfxMessageBox("aaaaa");
break;
} } LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
BOOL __declspec(dllexport)__stdcall installhook(PFCALLBACK Func)
{
hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
return TRUE;
}
BOOL __declspec(dllexport)__stdcall UnHook()
{
BOOL unhooked = UnhookWindowsHookEx(hkb);
return unhooked;
}
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)
{
case 'A':
AfxMessageBox("aaaaa");
break;
} } LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
BOOL __declspec(dllexport)__stdcall installhook(PFCALLBACK Func)
{
hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
return TRUE;
}
BOOL __declspec(dllexport)__stdcall UnHook()
{
BOOL unhooked = UnhookWindowsHookEx(hkb);
return unhooked;
}
HHOOK hkb=NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)
{
case 'A':
AfxMessageBox("aaaaa");
break;
} } LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
BOOL __declspec(dllexport)__stdcall installhook(PFCALLBACK Func)
{
hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
return TRUE;
}
BOOL __declspec(dllexport)__stdcall UnHook()
{
BOOL unhooked = UnhookWindowsHookEx(hkb);
return unhooked;
}
http://www.csdn.net/develop/read_article.asp?id=16499
还是不行啊