调用IDispatch :: Invoke时IE9 RC崩溃

时间:2011-02-14 09:35:09

标签: activex internet-explorer-9 comobject

我有一个正在使用IE6,7,8& 9 Beta 但在IE9 RC上崩溃。 我可以看到网页成功使用了ActiveX的界面,但是当我尝试从ActiveX调用IDispatch :: Invoke时,ActiveX崩溃了。

我的应用程序是从一个CHtmlView(IE容器),一个网页(GUI)和一个ActiveX(应用程序本身)构建的,我看到网页成功使用了ActiveX的界面但是当我尝试将数据发送回网页时崩溃。

在调试代码(vs2005 c ++)之后,我发现所有IDispatch函数都会导致崩溃,但这种行为只能在RC版本中重现,我们的产品已经运行了3年没有问题,现在每个客户端都升级了到RC不能再使用我们的产品了。

是否有任何可能导致此类行为的变化?根据在线文件我找不到任何东西。 感谢。

2 个答案:

答案 0 :(得分:1)

IE9RC引入了ActiveX过滤:

  

Internet Explorer 9 RC允许您阻止所有人的ActiveX控件   站点,然后将它们重新打开,仅用于您信任的站点   新的ActiveX过滤选项。

答案 1 :(得分:1)

经过艰苦的斗争后,我找到了答案(2年前)。 那时我关闭了IE9论坛上的问题,但我忘了关闭这个帖子。

谢谢@Paul Sweatte提醒我。

我们的框架如下工作:

  1. activex和web有一组已知的字符串,例如:“onStart”,“onPause”等......
  2. 网络会在引擎中注册该功能。
  3. activex会在需要时调用回调
  4. 第二部分是问题,显然在旧的IE版本中,javascript eval函数会创建IDispatch对象,你可以将对象传递给activex。

    在IE9中以及许多其他更改中,这也发生了变化,而eval将返回其他内容。

    当activex尝试执行回调时会发生挤压。 这是......非常难以调试。