dll调试成功和成功拦截窗口创建

通过SetWindowsHookex函数实现WH_CBT类型的hook,成功拦截并获取浏览器下载框及内部元素窗口创建的信息。使用OutputDebugString和DebugView工具进行调试,解决了范围和全局hook的问题。
摘要由CSDN通过智能技术生成

我这人比较懒,不喜欢在网上写自己的学习心得,不过这次还是准备写下。自己的想法是写这个文章算是对自己现在学的东西的一个copy,以后忘了就直接可以借来用。呵呵。

真的要将近一个月了,就在今天,我终于拦截到了下载框的创建了。O(∩_∩)O哈哈~

用的SetWindowsHookex函数,第一个参数给的是WH_CBT。在回调函数中,其中一个case就是判断HCBT_CREATEWND,从而获得创建窗口的信息。只要是窗口都能获得,那就不仅仅是下载窗口,而且下载窗口里面的各个元素,比如直接打开啊,下载啊, 取消啊这些按钮都是可以拦截到的。

开始,不知道改怎么调试,老是发现不能拦截到浏览器窗口的创建,只能拦截到自己exe程序的窗口创建(如about窗口),自己以为是DLL的写法有问题,没有变成全局的hook,可SetWindowsHookex函数的参数很简单的,只要是把第四个参数写成0就可以了(这个应该是一目了然的吧!)。后来又以为是变量范围问题,不知道是应该设成dll全局,还是设在#pragma data_seg里面。虽然自己有点没怎么完全搞明白,但大概意思还是懂的啊。

为了查看调试信息,开始用MessageBox,但是这个本身就是一个窗口,这样容易搞死机,没办法就换日志文件。可不管怎么样,日志文件里打印的信息就是不对。后来才明白,这还是跟日志文件的范围有关。最后,我无意中在一个程序里发现OutputDebugString函数,用他来打印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值