调用 IDispatch::Invoke 时 IE9 RC 崩溃
我有一个适用于 IE6、7、8 和 IE6 的工作代码。 9 Beta 但在 IE9 RC 上崩溃。 我可以看到网页成功使用了 ActiveX 的接口,但是当我尝试从 ActiveX 调用 IDispatch::Invoke 时,ActiveX 崩溃了。
我的应用程序是由 CHtmlView(IE 容器)、网页(GUI)和 ActiveX(应用程序本身)构建的,我看到网页成功使用了 ActiveX 的界面,但是当我尝试将数据发送回网页时,我崩溃了。
调试代码(vs2005 c++)后,我发现所有 IDispatch 函数都会导致崩溃,但这种行为只能在 RC 版本中重现,我们的产品已经运行了大约 3 年,没有出现问题,现在每个升级到 RC 的客户端无法再使用我们的产品。
是否有任何变化可能导致这种行为?根据在线文档我找不到任何东西。 谢谢。
I have a working code that is working on IE6,7,8 & 9 Beta but crashes on IE9 RC.
I can see that the web page is using the ActiveX's interface successfully but when I try to call IDispatch::Invoke from the ActiveX , the ActiveX crashes.
My application is constructed from a CHtmlView (IE container) a web page (GUI) and an ActiveX (the application itself), I see that the webpage uses the ActiveX's interface successfully but when I try sending data back to the webpage I crash.
After debugging the code (vs2005 c++) I found that all IDispatch functions cause a crash, but this behavior only reproduce with the RC version, our product is already running for a bout 3 years without a problem and now every client that upgrades to the RC cannot use our product anymore.
Were there any changes that can cause such a behavior? according to the documentations on-line I couldn't find anything.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
IE9RC 引入了 ActiveX 过滤:
IE9RC introduced ActiveX Filtering:
经过一番艰苦的努力,我找到了答案(两年前)。
当时我关闭了IE9论坛上的问题,但我忘了关闭这个帖子。
谢谢@Paul Sweatte 提醒我。
我们的框架的工作原理如下:
第二部分是问题,显然在旧的IE版本中,javascript eval函数会创建IDispatch对象,并且您可以将对象传递给activex。
在 IE9 中,除了许多其他更改之外,这一点也发生了变化,并且 eval 会返回其他内容。
当 activex 尝试执行回调时,就会发生挤压。
调试起来非常困难。
After tiresome struggle I found the answer (2 years ago).
Back then I closed the questions on the IE9 forum but I forgot to close this thread.
Thank you @Paul Sweatte for reminding me.
Our framework worked as followed:
The second part was the problem, apparently in old IE versions, the javascript eval function would create IDispatch objects, and you could pass the objects to the activex.
In IE9 along with many other changes this changed too, and eval would return something else.
The crush would happen when the activex tried to execute the callback.
It was ... VERY hard to debug.