2010-02-05 6 views
0

C++을 사용하여 xpcom 구성 요소를 개발했습니다. 내 구성 요소에 GetHWND() 메서드가 있습니다. 또한 javascript를 사용하여 다른 xpcom 구성 요소를 개발했습니다. 자바 스크립트 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 is not defined"오류가 발생합니다. 나는 Google 검색을했지만 솔루션을 찾지 못했습니다.

모질라 파이어 폭스를 사용하고 있으며 동일한 기능을 원합니다.

이 문제를 해결하는 데 도움을주십시오. 미리 감사드립니다.

+0

질문에 C++ 및 javascript 태그를 추가합니다. 더 많은 사람들이 해결책을 찾도록하십시오. –

답변

1

당신이 필요하지 않습니다 : 확장 코드는 당신이 XPCOM 층과 구성 요소에 액세스 할 수 있도록 크롬 권한을 가지고 실행

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

내가 Nickolay 동의.

내가 Nikolay가 언급 한 줄에서 작동하는지보고 싶습니다. 두 번째 항목 >> C++ 구성 요소의 인터페이스가 정의되는 방식. XPIDL은 HWND 유형을 인식하지 못하기 때문에 다른 유형을 제공해야하거나 기본 유형을 사용할 수 있지만 [스크립트 가능] 인터페이스에서는 지원하지 않습니다.

관련 문제