简体   繁体   English

如何利用javascript xpcom组件中的c ++ xpcom组件

[英]How to make use of c++ xpcom component from javascript xpcom component

I have developed a xpcom component using c++. 我已经使用c ++开发了xpcom组件。 I have GetHWND() method in my component. 我的组件中有GetHWND()方法。 I have also developed another xpcom component using javascript. 我还使用JavaScript开发了另一个xpcom组件。 I want to make use of GetHWND function in javascript xpcom component. 我想利用javascript xpcom组件中的GetHWND函数。 I am using following code to do so. 我正在使用以下代码来做到这一点。

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

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

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

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

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

But it is giving error as "ReferenceError: netscape is not defined". 但是它给出错误为“ ReferenceError:未定义netscape”。 I did google search but did not find the solution to it. 我做了谷歌搜索,但没有找到解决方案。

I am using Mozilla Firefox and I want it to get worked for the same. 我正在使用Mozilla Firefox,但我希望它也能正常工作。

Please help me to come out of this problem. 请帮助我解决这个问题。 Thanks in advance. 提前致谢。

You don't need these: 您不需要这些:

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

I agree with Nickolay, when your extension code is executed it has chrome privileges, which allow you to access XPCOM layer and components. 我同意Nickolay的观点,当您执行扩展代码时,它具有chrome特权,该特权使您可以访问XPCOM层和组件。

What I would like to see is if it will work with the lines Nikolay mentioned out. 我想看看它是否可以与Nikolay提到的方法一起使用。 And second item >> how your interface of C++ component is defined. 第二项>>如何定义C ++组件的接口。 XPIDL doesn't aware of HWND type, so you have to provide some different type, or you can use native type but it's not supported by [scriptable] interfaces XPIDL不知道HWND类型,因此您必须提供一些其他类型,或者可以使用本机类型,但[可脚本化]接口不支持该类型

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM