下面是我自己写的键盘钩子的回调函数,在一个Dll里,钩子是全局钩子:
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)//键盘按键标识
{
case 'A':MessageBox(0,"A","nihao",0);break; //当字母键A被按下
case 'B':MessageBox(0,"B","nihao",0);break;
default:CallNextHookEx(hkb,nCode,wParam,lParam);
}
}
LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
不知道为什么当自己的exe为活动窗口时,执行正常;当自己的exe为后台程序时,总是出现非法操作!
哪位高手给我个解决方法?
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)//键盘按键标识
{
case 'A':MessageBox(0,"A","nihao",0);break; //当字母键A被按下
case 'B':MessageBox(0,"B","nihao",0);break;
default:CallNextHookEx(hkb,nCode,wParam,lParam);
}
}
LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
不知道为什么当自己的exe为活动窗口时,执行正常;当自己的exe为后台程序时,总是出现非法操作!
哪位高手给我个解决方法?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货