我这人比较懒,不喜欢在网上写自己的学习心得,不过这次还是准备写下。自己的想法是写这个文章算是对自己现在学的东西的一个copy,以后忘了就直接可以借来用。呵呵。
真的要将近一个月了,就在今天,我终于拦截到了下载框的创建了。O(∩_∩)O哈哈~
用的SetWindowsHookex函数,第一个参数给的是WH_CBT。在回调函数中,其中一个case就是判断HCBT_CREATEWND,从而获得创建窗口的信息。只要是窗口都能获得,那就不仅仅是下载窗口,而且下载窗口里面的各个元素,比如直接打开啊,下载啊, 取消啊这些按钮都是可以拦截到的。
开始,不知道改怎么调试,老是发现不能拦截到浏览器窗口的创建,只能拦截到自己exe程序的窗口创建(如about窗口),自己以为是DLL的写法有问题,没有变成全局的hook,可SetWindowsHookex函数的参数很简单的,只要是把第四个参数写成0就可以了(这个应该是一目了然的吧!)。后来又以为是变量范围问题,不知道是应该设成dll全局,还是设在#pragma data_seg里面。虽然自己有点没怎么完全搞明白,但大概意思还是懂的啊。
为了查看调试信息,开始用MessageBox,但是这个本身就是一个窗口,这样容易搞死机,没办法就换日志文件。可不管怎么样,日志文件里打印的信息就是不对。后来才明白,这还是跟日志文件的范围有关。最后,我无意中在一个程序里发现OutputDebugString函数,用他来打印