【问题标题】:IE9 RC crashes when calling IDispatch::Invoke调用 IDispatch::Invoke 时 IE9 RC 崩溃
【发布时间】:2011-06-26 19:28:34
【问题描述】:

我的代码在 IE6、7、8 和 9 Beta 上运行,但在 IE9 RC 上崩溃。 我可以看到网页成功使用了 ActiveX 的接口,但是当我尝试从 ActiveX 调用 IDispatch::Invoke 时,ActiveX 崩溃了。

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

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

是否有任何更改会导致这种行为?根据在线文档,我找不到任何东西。 谢谢。

【问题讨论】:

    标签: activex internet-explorer-9 comobject


    【解决方案1】:

    IE9RC 介绍了 ActiveX 过滤:

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

    【讨论】:

    • 嗨,保罗,感谢您的评论,但就我而言,这不是答案。我忘了用答案更新这个帖子,但我现在会更新它。
    【解决方案2】:

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

    感谢@Paul Sweatte 提醒我。

    我们的框架工作如下:

    1. activex 和 web 有一组已知字符串,例如:“onStart”、“onPause”等...
    2. Web 将在引擎中注册该函数。
    3. activex 会在需要时调用回调

    第二部分是问题,显然在旧的 IE 版本中,javascript eval 函数会创建 IDispatch 对象,您可以将对象传递给 activex。

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

    当 activex 尝试执行回调时会发生崩溃。 这……非常难以调试。

    【讨论】:

      猜你喜欢
      • 2014-08-21
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      相关资源
      最近更新 更多