用于捕捉用户点击的BHO在Windows中运行良好,而不是带有IE9的Windows 7 Home Premium



我为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有什么特别之处会阻止它运行。开始调查的几个提示:

  1. 是否加载了DLL。使用了Sysinternal的流程资源管理器
  2. 正在调用DllMain。使用WinDBG调试器调试iexplore.exe,并将调试器设置为在模块加载时中断:sxeld-YourDell.dll
  3. 你尝试两个版本的IE吗?"c:\program files"和c:\program files(x86)中都有IE。你的BHO是32位还是64位
  4. 它是你的代码正在做的事情,还是在你的代码之前。除了DllMain,代码的下一个入口点是SetSite。如果你的代码加载了,你会让IE调用这个方法吗

编辑:更多你可以尝试的东西(在阅读你的赞扬后):

我的猜测是你的DLL缺少一些阻止它加载的东西。验证DLL是否加载,以及IE和对象之间的握手是否正常。

  1. 尝试在SetSite方法上设置断点(或尝试向调试器写入字符串)
  2. 模拟IE!用C++实现一个简短的本机控制台程序。在main中调用CoInitialize(单线程单元-这是默认值),然后调用CoCreateInstance您的类对象(即CLSID)。查看您的对象是否实例化

最新更新