📄 subject_43702.htm
字号:
<p>
序号:43702 发表者:lyh_leo 发表日期:2003-06-13 10:09:53
<br>主题:请教关于调试钩子DLL时遇到的问题,请支招
<br>内容:在VC6下编了一个全局钩子的动态链接库,钩子的作用是能够监控系统中窗口的打开关闭和标题刷新,遇到了两个问题,分别描述如下,请指点,谢谢:<BR>1. 在钩子DLL程序中我通过钩子函数监控HSHELL_WINDOWDESTROYED、HSHELL_WINDOWCREATED和HSHELL_REDRAW,一旦发现这三种窗口动作,就往主应用程序发送一个自定义的消息,主应用程序再进行处理。可是奇怪的是,象notepad,IE之类一般程序窗口的打开关闭都能监视到,可是命令窗口cmd(我是在win2000 pro下)的打开关闭,钩子却检测不到HSHELL_WINDOWDESTROYED、HSHELL_WINDOWCREATED,而是好像检测到一个HSHELL_WINDOWACTIVATED,这是为什么?我应该怎么样监视cmd命令窗口的打开和关闭呢?<BR>2. 我想调试钩子DLL,设定了它的外部调试exe文件是我的主应用程序(也是一个DEBUG版本的编译结果)。用F5运行起钩子DLL项目后,然后在钩子函数里检测到窗口打开发消息的程序行处设定了断点,然后打开一个notepad,可是程序并没有停止,可是主应用程序确实收到了窗口打开的消息(我在主应用程序中放了trace,可以看到收到了自定义的消息)。可见是执行到了钩子处理函数的,可是为什么调试时不在钩子函数断点处中断呢?<BR>我附上了钩子DLL和主应用程序的源文件(精简了使只与本问题有关),很短小,请高手们能看一下,给我支支招。<BR>PS:编译时先编译syshook钩子DLL,因为主应用程序需要它的lib,还有编译结果要放到系统的path中,不然应用程序找不到。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:Neil Gan 回复日期:2003-06-14 05:11:08
<br>内容:1. I never used WH_SHELL before. but, if you use WH_GETMESSAGE, you can always watch on the WM_CREATE and WM_DESTROY messages.<BR><BR>2. for every process, there is a logical copy of your hook dll. you set the breakpoint on the copy which runs under your app, not on the copy runs under notepad.<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lyh_leo 回复日期:2003-06-16 09:58:15
<br>内容:第二点我明白了。(BTW,那有没有方法调试这种情况呢?)<BR>关于第一点,我修改了钩子生成为是WH_GETMESSAGE,相应修改了钩子处理函数。可是怎么现在连一般窗口的开关都检测不到了呢?我的漏洞在什么地方?请帮我查看一下,thx<BR><BR>附上修改的syshook.cpp文件,其他文件都没有修改
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Neil Gan 回复日期:2003-06-17 10:38:59
<br>内容:2. you can set the program as your .exe file to run on debugging.<BR><BR>1. read MSDN for WH_GETMESSAGE hook. you need to watch for window messages in stead of HSELL_...
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -