社区
进程/线程/DLL
帖子详情
鼠标钩子问题,为什么不能钩其他进程鼠标消息
blastball
2002-03-03 09:36:42
程序如下,但MouseProc只能铺捉调用进程
mouseHook=(HHOOK)SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc, theApp.m_hInstance, 0 );
...全文
73
26
打赏
收藏
鼠标钩子问题,为什么不能钩其他进程鼠标消息
程序如下,但MouseProc只能铺捉调用进程 mouseHook=(HHOOK)SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc, theApp.m_hInstance, 0 );
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Cowboy22
2002-03-05
打赏
举报
回复
给你发了一个程序,不过是勾WH_CALLWNDPROCRET的。
ygd
2002-03-05
打赏
举报
回复
倒数第二参数错误
应该动态库本模块句柄
madfox
2002-03-05
打赏
举报
回复
在dll cpp中:
LRESULT CALLBACK cbMouseProc(int nCode, WPARAM wParam, LPARAM lParam )
{
...
return CallNextHookEx(g_hMouseHook,nCode,wParam,lParam);
}
void StartHook()
{
g_hMouseHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)cbMouseProc,theApp.m_hInstance,0 );
}
在app调用:例如
OnOk()
{
StartHook();
}
没有不成功的,试试
dongfa
2002-03-05
打赏
举报
回复
错了.
SetWindowsHookEx(WH_MOUSE,HookProc,hInstance,0);
dongfa
2002-03-05
打赏
举报
回复
SetWindowsHookEx(WH_MOUSE,HookProc,NULL,0);
blastball
2002-03-05
打赏
举报
回复
谢谢大家,解决了
QLSoft
2002-03-05
打赏
举报
回复
何不用消息挂钩试试??
HHOOK = SetWindowsHookEx(WH_MESSAGE,(HOOKPROC)MesssageHookProc,wParam,lParam);
回调函数:
LRESULT CALLBACK MesssageHookProc(int ncode,WPARAM wparam,LPARAM lparam);
小弟有关于“挂钩”的相关源码,小弟此前做过几乎所有的挂钩程序[指Windows所支持的各种类型].
suntingting
2002-03-05
打赏
举报
回复
倒msdn中查一查SetWindowsHookEx的内容,你就知道怎样用全局钩子
全局钩子一定要为.dll文件
strip
2002-03-04
打赏
举报
回复
为什么不看看上面的例子先?
blastball
2002-03-04
打赏
举报
回复
tar(GPS)共享段,有什么规定吗,msdn怎么没说,
如何说明呢
strip
2002-03-04
打赏
举报
回复
同意gpib2000, 你可以参见msdn中的例子(里面生成了moushook.dll 和 testapp.exe):
MousHook.exe Demonstrates Windows 3.1 WH_MOUSE Hook (Q81333)
http://support.microsoft.com/support/kb/articles/Q81/3/33.ASP
(这个sample的项目文件是makefile,调用nmake来build:
nmake /f makefile
)
tar
2002-03-04
打赏
举报
回复
共享断的说
sandiii
2002-03-04
打赏
举报
回复
我也在找例子,大侠能不能给我也发一个,谢谢
gerysand@hotmail.com
blastball
2002-03-04
打赏
举报
回复
函数声明:
LRESULT CALLBACK MouseProc(int ncode,WPARAM wparam,LPARAM lparam);
gpib2000
2002-03-04
打赏
举报
回复
要想捕捉其它进程的鼠标消息,应在DLL中设置钩子,然后在你的应用中调用。
georgehuang
2002-03-04
打赏
举报
回复
上面的大侠,你给个例子好么,拜托了
blastball
2002-03-04
打赏
举报
回复
谁有全局的鼠标钩子例子吗,上面的方式还是不行啊,
我的email: tyt@263.net 谢了
bbasd88
2002-03-04
打赏
举报
回复
系统里可没这个函数,MouseProc要定义成一个基本的回调函数。
georgehuang
2002-03-04
打赏
举报
回复
应该怎么声明这个函数呢?它不是系统消息本来就会处理的函数吗
bbasd88
2002-03-04
打赏
举报
回复
MouseProc没有在前面声明,只在后面有实现的?
加载更多回复(6)
delphi写的全局
鼠标
钩
子
delphi写的全局
鼠标
钩
子
delphi写的全局
鼠标
钩
子
delphi写的全局
鼠标
钩
子
MouseHook破解游戏外挂用_非本地
钩
子
非全局
钩
子
而是只
钩
指定
进程
的
鼠标
钩
子
.rar
MouseHook破解游戏外挂用_非本地
钩
子
非全局
钩
子
而是只
钩
指定
进程
的
鼠标
钩
子
.rar
Delphi MouseHook
鼠标
钩
子
.rar
Delphi MouseHook
鼠标
钩
子
,全局映像文件, 如果没有TMappingMem, hook就只对本
进程
起作用,子类TMouseHook, 只提供事件接口实现,关键所在, 通过AllocateHWnd创建一个不可见的窗体, 来实现所有
消息
的中转,通过TMouseHookBase的WndProc来实现对
消息
的响应,最终并附有测试项目的源码。
C#
鼠标
钩
子
和键盘事件
C#编码,VS2005代码,有拾取颜色,设置
鼠标
背景图,关闭
进程
,模拟全局按键等功能,版权非本人所有,不得用于非法用途,含源代码。
钩
子
函数的使用,有例子
三:程序的设计: I:设置
钩
子
设置
钩
子
是通过SetWindowsHookEx ()的API函数. 原形: HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId) idhook:装入
钩
子
的类型. lpfn:
钩
子
进程
的入口地址 hMod: 应用程序的事件句柄 dwThreadId: 装入
钩
子
的线程标示 参数: idHook: 这个参数可以是以下值: WH_CALLWNDPROC、WH_CALLWNDPROCRET、WH_CBT、WH_DEBUG、WH_FOREGROUNDIDLE、WH_GETMESSAGE、WH_JOURNALPLAYBACK、WH_JOURNALRECORD、WH_KEYBOARD、 WH_KEYBOARD_LL、WH_MOUSE、WH_MOUSE_LL、WH_MSGFILTER、WH_SHELL、WH_SYSMSGFILTER。 对于这些参数,我不想一一加以解释,因为MSDN中有关于他们的详细注解。我只挑选其中的几个加以中文说明。 WH_KEYBOARD:一旦有键盘敲打
消息
(键盘的按下、键盘的弹起),在这个
消息
被放在应用程序的
消息
队列前,WINDOWS将会调用你的
钩
子
函数。
钩
子
函数可以 改变和丢弃键盘敲打
消息
。 WH_MOUSE:每个
鼠标
消息
在被放在应用程序的
消息
队列前,WINDOWS将会调用你的
钩
子
函数。
钩
子
函数可以改变和丢弃
鼠标
消息
。 WH_GETMESSAGE:每次当你的应用程序调用一个GetMessage()或者一个PeekMessage()为了去从应用程序的
消息
队列中要求一个
消息
时,WINDOWS都会调用你的
钩
子
函数。 而
钩
子
函数可以改变和丢弃这个
消息
。 II:释放
钩
子
钩
子
的释放使用的是UnhookWindowsHookEx()函数 原形:BOOL UnhookWindowsHookEx( HHOOK hhk ) UnhookWindowsHookEx()函数将释放的是
钩
子
链中函数SetWindowsHookEx所装入的
钩
子
进程
。 hhk: 将要释放的
钩
子
进程
的句柄。 III:
钩
子
进程
钩
子
进程
使用函数HookProc;其实HookProc仅仅只是应用程序定义的符号。比如你可以写成KeyBoardHook.但是参数是不变的。Win32 API提供了诸如:CallWndProc、 GetMsgProc、DebugProc、CBTProc、MouseProc、KeyboardProc、MessageProc等函数,对于他们的详细讲解,可以看MSDN我在此只讲解一下KeyBoardHook的含义。 原形:LRESULT CALLBACK KeyBoardHook (int nCode, WPARAM wParam, LPARAM lParam) 说明:
钩
子
进程
是一些依附在一个
钩
子
上的一些函数,因此
钩
子
进程
只被WINDOWS调用而不被应用程序调用,他们有时就需要作为一个回调函数(CALLBACK)。 参数说明: nCode:
钩
子
代码,
钩
子
进程
使用
钩
子
代码去决定是否执行。而
钩
子
代码的值是依靠
钩
子
的种类来定的。每种
钩
子
种类都有他们自己一系列特性的代码。比如对于WH_KEYBOARD,
钩
子
代码的参数有:HC_ACTION,HC_NOREMOVE。HC_ACTION的意义:参数wParam 和lParam 包含了键盘敲打
消息
的信息,HC_NOREMOVE的意义:参数wParam 和lParam包含了 键盘敲打
消息
的信息,并且,键盘敲打
消息
一直没有从
消息
队列中删除。(应用程序调用PeekMessage函数,并且设置PM_NOREMOVE标志)。也就是说当nCode等于HC_ACTION时,
钩
子
进程
必须处理
消息
。而为HC_NOREMOVE时,
钩
子
进程
必须传递
消息
给CallNextHookEx函数,而
不能
做进一步的处理,而且必须有CallNextHookEx函数的返回值。 wParam:键盘敲打所产生的键盘
消息
,键盘按键的虚拟代码。 lParam:包含了
消息
细节。 注意:如果
钩
子
进程
中nCode小于零,
钩
子
进程
必须返回(return) CallNextHookEx(nCode,wParam,lParam);而
钩
子
进程
中的nCode大于零,但是
钩
子
进程
并不处理
消息
, 作者推荐你调用CallNextHookEx并且返回该函数的返回值。否则,如果另一个应用程序也装入WH_KEYBOARD
钩
子
,那么该
钩
子
将不接受
钩
子
通知并且返回一个不正确的值。 如果
钩
子
进程
处理了
消息
,它可能返回一个非零值去阻止系统传递该信息到其它剩下的
钩
子
或者windows
进程
。所以最好在
钩
子
进程
的最后都返回CallNextHookEx的返回
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章