社区
进程/线程/DLL
帖子详情
线程专用钩子和全局钩子的区别和作用?
duhaohao
2000-04-13 11:32:00
线程专用钩子和全局钩子的区别和作用?
键盘HOOK怎样实现????
...全文
701
9
打赏
收藏
线程专用钩子和全局钩子的区别和作用?
线程专用钩子和全局钩子的区别和作用? 键盘HOOK怎样实现????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kkttcsd
2001-05-12
打赏
举报
回复
真是感激不尽,我也正想了解.
duhaohao
2000-05-26
打赏
举报
回复
高手的详细解释???????
lu0
2000-05-26
打赏
举报
回复
消息队列是以线程为基础的.一个局部HOOK勾挂的是一个进程内所有线程的消息.
此类实现由于不设计进程CONTEXT切换,是轻量极的HOOK.全局的HOOK会映射到所有加载
USER32.DLL的进程中.其实是USER32.DLL为这些进程调用LOADLIBRARY来加载HOOK所在的
DLL.并且在所有的消息在被送到消息处理前先调用HOOKPROC.当HOOKPROC决定该消息已经被处理完毕,那么就从线程消息队列里去除该消息.HOOKPROC本身的调用按照被加载的先后次序从后到前备调用.就象DOS时代的TSR拦截INT21H一样.是属于LIFO性质的.
似乎能够讲的就这么点乐.
http://lu0.126.com
royluo
2000-05-26
打赏
举报
回复
我觉得windmiiq兄已经解释的够详细了
其实就是全局和局部的区别
如果可以用线程Hook实现就最好用线程Hook
因为Hook技术用的不好会大大降低整个Windows系统的性能
这也是为什么WinCE不支持HOOK的原因了
至于键盘HOOK用SetWindowsHookEx带WH_KEYBOARD参数就可以了
比如你做一个全局的键盘HOOK,这样不管当前激活的应用程序是什么
只要有键盘消息,windows都会先问问你的Hook Proc,
“老第,这个键如何啊?”
完了你的Hook Proc拿过来左看右看,
最后说
“哎呀,我不要这个键,还给你”
你说累不累啊。
sean
2000-04-20
打赏
举报
回复
线程专用钩子和全局钩子的区别和作用?
有没有人做一些详细解释?
simon_sun
2000-04-20
打赏
举报
回复
以下为一个键盘钩子的主要的处理函数实现,原本是在dll中实现的,现将其提取以供参考,可以创建一个基于对话框的应用,在其中调用InstallKeyboardHook安装钩子,然后运行其他应用使用F10键,则可看到效果,最后在自己的应用中调用DeInstallKeyboardHook卸除钩子。
HINSTANCE ghInstance=0;
HOOKPROC glpfnHookProc=0;
LRESULT KbdHookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
BOOL bHandledKeystroke=false;
if(((DWORD)lParam&0x40000000)&&(HC_ACTION==nCode))
{
switch(wParam)
{
case VK_F10:
AfxMessageBox("F10");
bHandledKeystroke=true;
break;
default:
break;
}
}
return (bHandledKeystroke?true:
::CallNextHookEx(ghKeyHook,nCode,wParam,lParam));
}
//hWnd为调用程序的窗口句柄
BOOL InstallKeyboardHook(HWND hWnd)
{
ghInstance=AfxGetInstanceHandle();
BOOL bSuccess=false;
if(!ghKeyHook)
{
ghWndMain=hWnd;
glpfnHookProc=(HOOKPROC)KbdHookProc;
bSuccess=(NULL!=(ghKeyHook=::SetWindowsHookEx (WH_KEYBOARD,glpfnHookProc,
ghInstance,NULL)));
}
return bSuccess;
}
BOOL DeInstallKeyboardHook()
{
if(ghKeyHook)
{
if(true==(0!=::UnhookWindowsHookEx(ghKeyHook)))
ghKeyHook=NULL;
}
return (NULL==ghKeyHook);
}
windmiiq
2000-04-20
打赏
举报
回复
我只知道线程专用钩子只能钩到本线程的相关消息,而全局钩子可以钩到整个系统的相
关消息。不过不久前我刚好做过类似程序。如果你需要,我可以寄给你。
duhaohao
2000-04-20
打赏
举报
回复
谁告诉我???
weikeming
2000-04-14
打赏
举报
回复
杜哥,我爱莫能助...
钩子
技术HOOK使用教程
其中,
全局
钩子
必须包含在DLL中,
线程
专用
钩子
可以包含在可执行文件中。得到控制权的
钩子
函数在完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另一个API函数CallNextHookEx来传递它,
钩子
函数也可以...
易语言 茶凉
专用
模块
模块名称:茶凉
专用
模块 作者:茶凉 版本:2.0 本模块可以编程更简单,仅仅用核心支持库编写。 @备注: 官方论坛:http://bbs.clrje.cn/ 官方QQ群:92716369 ------------------------ -------------------------- ...
Python核心编程第二版
11.8.6 变量
作用
域和名称空间 11.9 *递归 11.10 生成器 11.10.1 简单的生成器特性 11.10.2 加强的生成器特性 11.11 练习 第12章 模块 12.1 什么是模块 12.2 模块和文件...
Python核心编程第二版(ok)
11.8.6 变量
作用
域和名称空间 11.9 递归 11.10 生成器 11.10.1 简单的生成器特性 11.10.2 加强的生成器特性 11.11 练习 第12章 模块 12.1 什么是模块 12.2 模块和文件 ...
1345个易语言模块
内 存读写和进程操作.ec 内存读写模块 2.0.ec 内存读写模块 2[1].0.ec 内存读写模块.ec 内存读写模块 1.0.ec 内存读写模块2.0.ec 写屏幕.ec 冰川多媒体播放模块 1.0.ec 凝逸.注册易语言支持库 1.0.ec 凝逸网页取文...
进程/线程/DLL
15,472
社区成员
49,183
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章