我做了一个全局键盘钩子,但连续几次运行没有卸载,现在该如何卸载呢?

djhdu 2002-10-23 11:22:29
我用此语句SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyBoardProc,0,0); 创建了一个全局钩子,但是刚开始没有调用UnhookWindowsHookEx函数,造成程序退出以后,全局钩子依然存在,监视所有的信息,我现在想问一下,如何去掉这个系统中还有的全局钩子呢?
...全文
202 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurry2002 2002-12-19
  • 打赏
  • 举报
回复
SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyBoardProc,0,0);
第三個參數是0嗎??應該是DLL的默快句柄吧!!
liugy 2002-11-18
  • 打赏
  • 举报
回复
tools /trace 开关!!!
ylb_and_xy 2002-11-08
  • 打赏
  • 举报
回复
关闭程序以后还有?
没有遇到过!
djhdu 2002-11-08
  • 打赏
  • 举报
回复
没有人碰到这个问题吗?
xtky_limi 2002-11-06
  • 打赏
  • 举报
回复
关注
djhdu 2002-11-06
  • 打赏
  • 举报
回复
哦,如果是这样的话,那我的vc就是出问题了,每次Debug调试程序,调试窗口里出现一堆如下的数据,不论调试哪一个程序都会出现下面类似的内容,好像是纪录了每一个消息,这是怎么引起的呢?

ViewVideo: WndProc: hwnd=0x40350, msg = WM_NCCREATE (0x0000, 0x0012B594)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_NCCALCSIZE (0x0000, 0x0012B5C4)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_CREATE (0x0000, 0x0012B594)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_SIZE (0x0000, 0x01D3028A)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_MOVE (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_SETFONT (0x9B0A002E, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_INITDIALOG (0x20890, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGING (0x0000, 0x0012B344)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGED (0x0000, 0x0012B344)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_MOVE (0x0000, 0x009700BB)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGING (0x0000, 0x0012B5D4)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_ACTIVATEAPP (0x0001, 0x00000550)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_NCACTIVATE (0x0001, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_ACTIVATE (0x0001, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036E (0x0001, 0x0012B36C)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_COMMAND (0x10003E8, 0x00020890)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_USER+0x0000 (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_SHOWWINDOW (0x0001, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGING (0x0000, 0x0012B718)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_NCPAINT (0x0001, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_ERASEBKGND (0x25010847, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGED (0x0000, 0x0012B718)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_PAINT (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x2017A, msg = WM_PAINT (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x2017A, msg = WM_NCPAINT (0x0001, 0x00000000)
ViewVideo: WndProc: hwnd=0x2017A, msg = WM_ERASEBKGND (0x25010847, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036A (0x0000, 0x00000000)
ViewVideo: PumpMessage: hwnd=0x20890, msg = WM_PAINT (0x0000, 0x00000000)
ViewVideo: PumpMessage: hwnd=0x20892, msg = WM_PAINT (0x0000, 0x00000000)
ViewVideo: PumpMessage: hwnd=0x2089A, msg = WM_PAINT (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036A (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036A (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036A (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036A (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036A (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = 0x036A (0x0000, 0x00000000)

ViewVideo: WndProc: hwnd=0x40350, msg = WM_COMMAND (0x0002, 0x00020894)
ViewVideo: SENDING command id 0x0002 to CDialog target.
ViewVideo: WndProc: hwnd=0x40350, msg = 0x0281 (0x0001, 0xC000000F)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_SETFOCUS (0x20894, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGING (0x0000, 0x0012B068)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGED (0x0000, 0x0012B068)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_WINDOWPOSCHANGING (0x0000, 0x0012B730)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_DESTROY (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x2017A, msg = WM_DESTROY (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x2017A, msg = WM_NCDESTROY (0x0000, 0x00000000)
ViewVideo: WndProc: hwnd=0x40350, msg = WM_NCDESTROY (0x0000, 0x00000000)
caitou123 2002-10-25
  • 打赏
  • 举报
回复
"造成程序退出以后,全局钩子依然存在",你没搞错吧
qitengyi 2002-10-24
  • 打赏
  • 举报
回复
在DLL的入口函数中加入
if(dwReason == DLL_PROCESS_DETACH)
卸载钩子函数

这样应该可以卸载掉
NowCan 2002-10-24
  • 打赏
  • 举报
回复
应该没有这个可能的。进程结束会自动卸载钩子的。
rivershan 2002-10-23
  • 打赏
  • 举报
回复
Windows2000的话,会自动处理~
98的话估计现在已经蓝屏了~
:)
注销一下或者重启就可以了……
In355Hz 2002-10-23
  • 打赏
  • 举报
回复
“造成程序退出以后,全局钩子依然存在”
如果没记错的话,进程终止的话,系统自动撤销进程还未释放的钩子。
你可以检查一下包含全局钩子的DLL,这时应该已经没有其他进程加载这个DLL了。

15,471

社区成员

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

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