我有一个由 FireBreath 框架 (http://firebreath.org) 生成的 ActiveX 控件。我需要在托管 C++ 插件的页面中获取对
如果我使用 NPAPI,我将使用 NPNVPluginElementNPObject 常量和 NPN_GetValue。
因此,为了确保我说得清楚,请说我的页面中有以下内容:
我想要获得对插件的引用,就像使用 document.getElementById("testPlugin") 一样,但从为该 mimetype 插入的 activex 控件的 C++ 代码中除外。
请注意,将 id 作为 传递对我来说不是一个好的选择,但如果有一种方法可以从 activex 控件内部获取 ID,则可能可行。
edit:我正在考虑使用 getElementsByTagName 并尝试通过 DOM 找到它,但很难区分同一插件的两个实例之间的区别。
感谢来自芬兰的 FireBreath 贡献者 jtojanen,我们终于找到了解决方案。
首先是COM对象must注册为“公寓”,而不是“单身”(在注册表中)。否则,这是行不通的;似乎是 COM 中的一个错误。
然后在调用 SetClientSite 之后的任何地方,您都可以执行以下操作:
CComQIPtr<IOleControlSite> site(m_spClientSite);
CComPtr<IDispatch> dispatch;
site->GetExtendedControl(&dispatch);
CComQIPtr<IHTMLElement2> htmlElement = dispatch;
希望这可以节省一些时间;我花了将近两年的时间才找到可以为我回答这个问题的人。
htmlElement 中的对象将是包装您的插件的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)