2010-02-05 88 views
0

我已经开发了一个使用C++的xpcom组件。我的组件中有GetHWND()方法。我还开发了另一个使用javascript的xpcom组件。我想在javascript xpcom组件中使用GetHWND函数。我正在使用以下代码来执行此操作。如何使用javascript xpcom组件的C++ xpcom组件

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

var myComponent = Components.classes['@dougt/WebLock'].createInstance(Components.interfaces.IWebLock);

myComponent = myComponent.QueryInterface(Components.interfaces.IWebLock);

var res = myComponent.GetHWND(mainWindow.content.document);

但它给出的错误为“ReferenceError:netscape未定义”。我没有谷歌搜索,但没有找到解决办法。

我使用的是Mozilla Firefox,我希望它能够得到同样的效果。

请帮我解决这个问题。 在此先感谢。

+0

我会添加C++和javascripts标签的问题,尝试让更多的人去寻找解决方案。 – 2010-02-05 10:31:54

回答

1

您不需要这些:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); 
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
0

我同意Nickolay,当执行你的扩展代码有镀铬特权,它允许您访问XPCOM层和组件。

我想看到的是它是否能与尼古拉提到的线条一起工作。 第二项>>如何定义C++组件的接口。 XPIDL不知道HWND类型,所以你必须提供一些不同的类型,或者你可以使用本机类型,但它不支持[脚本]接口