【问题标题】:How can I allow only flash activeX but others disallow in my webcontrol used IWebBrowser2?如何在使用 IWebBrowser2 的 web 控件中只允许 flash activeX 而其他不允许?
【发布时间】:2012-02-28 14:11:28
【问题描述】:
我正在使用 IWebBrowser2 处理我的网络控件。
我希望它播放 Flash 电影,但不允许其他 ActiveX 控件。
我发现不允许所有使用 DLCTL_NO_DLACTIVEXCTLS 的 ActiveX 控制 | DLCTL_NO_RUNACTIVEXCTLS 标志
在调用的实现中。
但我在 msdn 中搜索 IWebBrowser 和相关接口,但找不到任何解决方案。
我希望在加载 ActiveX 之前捕获一个事件,或者只允许 Flash ActiveX 方式。
请帮忙。谢谢。
【问题讨论】:
标签:
c++
com
mfc
web-controls
【解决方案1】:
Web 浏览器的主机可以通过实现 IOleClientSite 并使用一组所需的行为标志响应 DISPID_AMBIENT_DLCONTROL 来控制其行为方式。一个重要的警告:标志 DLCTL_NO_RUNACTIVEXCTLS 仅阻止文档本身内的 OBJECT 标记。如果未设置 DLCTL_NO_SCRIPTS,则它不会影响从脚本调用 new ActiveXObject(“...”)。
为了防止在 Web 浏览器主机中执行 ActiveX,请提供 IInternetSecurityManager 并在使用 URLACTION_ACTIVEX_RUN 调用 ProcessURLAction 实现时返回 URLPOLICY_DISALLOW 和 S_FALSE。为了只允许指定的“允许列表”控件运行,ProcessURLAction 实现可以检查所请求控件的 CLSID;该 CLSID 是使用 pContext 参数传入的。