全局鼠标钩子问题。。。。。急

ft86281817 2008-10-20 04:19:52
hMouseHook = SetWindowsHookEx(WH_MOUSE,(HOOKPROC)HookMouseProc,g_hHinstance,0);//

LRESULT CALLBACK HookMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
LRESULT lResult = CallNextHookEx(hMouseHook,nCode,wParam,lParam);
if (nCode == HC_ACTION )
{
MOUSEHOOKSTRUCT *struMouseHook=(MOUSEHOOKSTRUCT *)lParam;
switch (wParam)
{//
case WM_LBUTTONDOWN:
_KeyLog("[LB]",TRUE);
break;
}
}
return 0;
}

确定钩子正常安装后, WM_LBUTTONDOWN 消息有时钩得到,有时候又钩不到(在客户区点击都能钩到)
打开记事本程序和WORD, 在记事本和WORD客户区点鼠标左键, WM_LBUTTONDOWN 消息正常钩到了.
但是在记事本程序非客户区(任务栏上来回切换)点鼠标左键 WM_LBUTTONDOWN 消息却钩不到.
当记事本程序为当前 活动窗口的时候, 我向其它的窗口点击左键, 这时 WM_LBUTTONDOWN 消息也是钩不到的 ;
我在网上也看有人和我一样的问题。说要:建共享数据段和初始化0,我都试了,键盘消息都正常,唯独鼠标只能钩到客户区的。。 总之一句话:就是让每点一次左键,都能正常钩到。。。。。
谢谢大家了。。。小弟刚开始学的。。。。。搞了很久了。。。。
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ft86281817 2008-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzz822163 的回复:]
C/C++ code
SetWindowsHookEx(WH_GETMESSAGE,
(HOOKPROC)msghook,
hInst,
0);
LPMSG msg = (LPMSG)lParam;
if(msg->message == WM_LBUTTONDOWN)
----------------



我正在搞这个,点任务栏切换各个程序都有反应的
[/Quote]

谢谢你,
能不能把你完整的代码给我看看,比较下问题出在哪。。。 键盘记录和鼠标是分开的。。。 g_hMouseHook = SetWindowsHookEx(WH_MOUSE,(HOOKPROC)HookMouseProc,g_hHinstance,0);//只鼠标左键,然后判断保存文件。。。
g_hHook2 = SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)HookProc,g_hHinstance,0);//在个记录键盘输入的
ft86281817 2008-10-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cnzdgs 的回复:]
如果_KeyLog中不是每次都打开文件,则只能在最初打开文件的进程中写文件,因为进程之间是不能共用文件句柄的。
[/Quote]
谢谢你,我这里没有用到进程,输入信息后,每次点击切换窗口时,保存一次文件。。。。 不知道为什么左键只能在客户区才钩的到。。。
cnzdgs 2008-10-20
  • 打赏
  • 举报
回复
如果_KeyLog中不是每次都打开文件,则只能在最初打开文件的进程中写文件,因为进程之间是不能共用文件句柄的。
ft86281817 2008-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
_KeyLog是怎么实现的?
[/Quote]
这个里面没有问题。。。
zzz822163 2008-10-20
  • 打赏
  • 举报
回复
static LRESULT CALLBACK msghook(UINT nCode, WPARAM wParam, LPARAM lParam)
zzz822163 2008-10-20
  • 打赏
  • 举报
回复

SetWindowsHookEx(WH_GETMESSAGE,
(HOOKPROC)msghook,
hInst,
0);
LPMSG msg = (LPMSG)lParam;
if(msg->message == WM_LBUTTONDOWN)
----------------

我正在搞这个,点任务栏切换各个程序都有反应的
cnzdgs 2008-10-20
  • 打赏
  • 举报
回复
_KeyLog是怎么实现的?

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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