您的位置:首页 > 其它

今天学习BHO的一点心得

2010-12-02 22:40 316 查看
今天受机房老杨启发,决定写一个拦截WebQQ的浏览器BHO插件(客户端QQ已经被我们用映像劫持搞定了),于是在网上找了些资料,没想到的是,BHO居然要用到COM,哇,COM啊,看到这个字眼我浑身发抖,这是微软最牛X的发明,这东西是出了名的难学啊,况且我还一窍不通,没办法,最后只有硬上了。

跟着牛人们提供的例子,我一步一步写完了代码,在第一次编译的时候,出现了下面的问题:

--------------------Configuration: NoWebQQ - Win32 Release MinDependency--------------------

Compiling...
WebQQ.cpp
J:\temp\program\NoWebQQ\WebQQ.cpp(46) : error C2065: 'DISPID_BEFORENAVIGATE2' : undeclared identifier
J:\temp\program\NoWebQQ\WebQQ.cpp(46) : error C2051: case expression not constant
J:\temp\program\NoWebQQ\WebQQ.cpp(77) : error C2065: 'DISPID_ONQUIT' : undeclared identifier
J:\temp\program\NoWebQQ\WebQQ.cpp(77) : error C2051: case expression not constant
J:\temp\program\NoWebQQ\WebQQ.cpp(80) : warning C4060: switch statement contains no 'case' or 'default' labels
执行 cl.exe 时出错.

NoWebQQ.dll - 1 error(s), 0 warning(s)

一看到 undeclared identifier 这个字眼,我第一反应就是缺少头文件,先在百度上找,没找到类似问题,后来又在CSDN发帖,没人张我,无赖之下只有手工到VC的Include文件夹下去找了,最后终于被我找到了,原来缺少的是EXDISPID.H这个头文件,加上之后,问题解决。

脸上淫荡的笑容都还没展开,第二个问题又接踵而来,错误信息如下:

--------------------Configuration: NoWebQQ - Win32 Release MinDependency--------------------
Compiling...
WebQQ.cpp
J:\temp\program\NoWebQQ\WebQQ.cpp(56) : error C2065: '_lpw' : undeclared identifier
J:\temp\program\NoWebQQ\WebQQ.cpp(56) : error C2440: '=' : cannot convert from 'unsigned short *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
J:\temp\program\NoWebQQ\WebQQ.cpp(56) : error C2065: '_convert' : undeclared identifier
执行 cl.exe 时出错.

NoWebQQ.dll - 1 error(s), 0 warning(s)

看到这一幕,我傻眼了,这是啥啊?我深知依我现在的水平是无法解决的,于是老规矩,先百度。没想到网络上已经有大佬发过帖了,点击进去,内容如下:

楼主:

error C2065: '_lpw ' : undeclared identifier
VC6编译ATL工程时的错误(与W2A,W2T有关),
谁帮忙解决一下。
谢谢

一楼:

USES_CONVERSION;
A2W();

二楼:

你一定忘了用USES_CONVERSION

三楼:

忘了加:
调用X2X的宏的函数,要在调用前增加这个宏
USES_CONVERSION;

四楼:

具体位置呢?在setting中加会
warning C4005: 'USES_CONVERSION ' : macro redefinition

五楼:

就加在A2W();的上一行

虽然不知道为什么会出错,但是在出错那句代码的上一句加上USES_CONVERSION问题确实解决了,好吧,先这样吧 。

生成DLL是成功了,但众所周知,把BHO安装到IE中也是个技术活,接下来要做的就是祈祷~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: