全局钩子问题?
我想屏弊键盘的"q"键,核心程序看下:
DllExport void WINAPI InstallLaunchEv()
{
Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD,
(HOOKPROC)LauncherHook,
theApp.m_hInstance,
0);
}
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam)
{
LRESULT Result=false;
if(nCode==HC_ACTION)
{
if(lParam & 0x80000000)
{
char c[1];
c[0]=wParam;
if(c[0]=='q')
{
Result=true;
}
else
{
Result=CallNextHookEx(Hook,nCode,wParam,lParam);
}
}
}
return Result;
}
运行结果是把全部键都屏蔽了,怎样改啊??
问题点数:100、回复次数:7Top
1 楼kkobebryant(分手不是我的本意)回复于 2004-09-03 18:46:58 得分 0
在线等啊,急!Top
2 楼lianglp(寻找黄金分割点)回复于 2004-09-03 19:18:00 得分 30
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode==HC_ACTION && (lParam & 0x80000000))
{
char c[1];
c[0]=wParam;
if(c[0]=='q')
{
return TRUE ;
}
}
return CallNextHookEx(Hook,nCode,wParam,lParam);
}
Top
3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-09-03 19:28:23 得分 5
Result=CallNextHookEx(Hook,nCode,wParam,lParam);
作为回调函数的返回Top
4 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2004-09-03 21:02:08 得分 2
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode==HC_ACTION && (lParam & 0x80000000))
{
char c[1];
c[0]=wParam;
if(c[0]=='q')
{
return TRUE ;
}
}
return CallNextHookEx(Hook,nCode,wParam,lParam);
}
正确答案。嘿嘿。。。Top
5 楼crystal521(【云淡风轻】)回复于 2004-09-03 21:30:17 得分 1
同意上面的Top
6 楼huwei001982(凶猛的小狗)回复于 2004-09-04 09:51:14 得分 59
有两点:
1\ LauncherHook 应该是放在 DLL 中的
2\char c[1];
c[0]=wParam;
if(c[0]=='q')
不明白为什么要这样写, 我一般是这样写
BYTE byte = (BYTE)wParam;
if (byte == 'q')Top
7 楼joachern(程序人生)回复于 2004-09-04 10:29:53 得分 3
gzTop




