我正在用C ++写一个BHO,基本上涉及两个阶段。
阶段1:从BHO打开新窗口并将其导航到网站URL(来自BHO),一旦DISPID_DOCUMENTCOMPLETE事件触发相应的URL,就将一些Javascript代码注入其文档,然后从js调用一些代码。然后,js引擎将处理更多代码,最后通过window.location.href
将其窗口指向其他URL。
阶段2:一旦DISPID_DOCUMENTCOMPLETE在BHO内部为新URL触发,流程就会走同一条路线:注入脚本等。这就是我遇到麻烦的地方。
尝试解决此问题:使用SendInput()以模拟鼠标单击。如上所述在第6点工作。使用在第二个URL DISPID_DOCUMENTCOMPLETE事件上触发的计时器,并在几秒钟后继续注入 - 当IHTMLDocument2 :: createElement()被调用时崩溃浏览器。
这种奇怪的行为有什么理由,也许还有办法解决这个问题? 谢谢!
答案 0 :(得分:1)
看起来我必须更新IWebbrowser2实例 - 它会在页面导航时更改。通过查询与DISPID_DOCUMENTCOMPLETE事件一起发送的第二个参数来获取新的接口指针。
链接到它:https://msdn.microsoft.com/en-us/library/aa768282%28v=vs.85%29.aspx