我为IE 8和IE9编写了一个BHO,它绑定并捕获我网站上用户页面上的某些元素(例如INPUT元素),而不是执行点击事件,而是执行自定义的后期处理,并根据用户点击的每个div/INPUT元素附带的数据向用户提供不同的选项。
现在的问题是:它在以下配置中运行良好:
- Windows XP,IE 8工作
- Windows 7 Ultimate x86,IE 8-工作
- Windows 7 Ultimate x64,IE 8-工作
- Windows 7 Ultimate x86,IE 9工作
- Windows 7 Ultimate x64,IE 9-工作
不适用于以下配置
- Windows 7 Home Premium x64,IE 9
我已经尝试了一切,但似乎什么都没做,BHO似乎加载在托管插件中,但它什么也没做,
我试着禁用
- 防病毒
- 智能屏幕过滤器
- 保护模式
- 高级设置重置等
但它似乎在Windows 7 Home Premium x64上不起作用。
不过我没有在x86版本的Windows7HomePremium中尝试过。
请帮忙。如果你们中的任何人都经历过同样的经历并找到了解决方案,那么请分享。
从表面上看,我不知道Home Premium x64有什么特别之处会阻止它运行。开始调查的几个提示:
- 是否加载了DLL。使用了Sysinternal的流程资源管理器
- 正在调用DllMain。使用WinDBG调试器调试iexplore.exe,并将调试器设置为在模块加载时中断:sxeld-YourDell.dll
- 你尝试两个版本的IE吗?"c:\program files"和c:\program files(x86)中都有IE。你的BHO是32位还是64位
- 它是你的代码正在做的事情,还是在你的代码之前。除了DllMain,代码的下一个入口点是SetSite。如果你的代码加载了,你会让IE调用这个方法吗
编辑:更多你可以尝试的东西(在阅读你的赞扬后):
我的猜测是你的DLL缺少一些阻止它加载的东西。验证DLL是否加载,以及IE和对象之间的握手是否正常。
- 尝试在SetSite方法上设置断点(或尝试向调试器写入字符串)
- 模拟IE!用C++实现一个简短的本机控制台程序。在main中调用CoInitialize(单线程单元-这是默认值),然后调用CoCreateInstance您的类对象(即CLSID)。查看您的对象是否实例化