2013-05-31 5 views
1

mozilla npruntime 프로젝트를 기반으로 MS에서 npapi dll을 컴파일하고 생성했습니다. 참조 : https://developer.mozilla.org/en-US/docs/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio. mozilla를 시작하고 about : plugins를 열면 플러그인이 표시됩니다. 하지만 "test.html"을 열면 플러그인이 나타나지 않습니다.NPAPI mozilla 플러그인로드 문제

별도의 테스트 응용 프로그램을 만들어 dll을 테스트했습니다. 을 통해 진입 점 기능에 액세스 할 수 있습니다. NP_INIT l_pInit = (NP_INIT) GetProcAddress (hModule, "NP_Initialize"); 그리고 나는 나의 플러그인 dll 함수로 들어갈 수있다.

하지만 mozilla에서는 작동하지 않습니다. 제발 제안 해주세요.

+0

about : plugins에 표시되지 않으면 리소스 파일 항목이 누락되었거나 틀릴 수 있습니다 (예 : [잘못된 로케일 사용] (http://stackoverflow.com/questions)./13859882/npapi-plugin-do-not-get-in-firefox)). –

답변

0

mozilla 프로세스를 직접 디버깅 할 수 있습니다. 그냥 프로세스에 연결하십시오. 그러나 최신 브라우저는 타사 플러그인을로드하기 위해 별도의 프로세스를 사용하기 때문에 해당 프로세스에 연결해야합니다. 로딩 루틴에 중단 점을 설정하고 (NP_GetEntryPoints, NP_Initialize) 무슨 일이 일어나는지 볼 수 있습니다.

또한 프로세스에 연결하는 데 문제가있는 경우 코드에서 디버그 대화 상자를 표시하고 문제 영역을 좁힐 수 있습니다.

UPDATE 1 :

이 NTO는 플러그인을 사용한다는 것을 알고 않는 브라우저처럼 보인다. 플러그인에 대한 hwat의 MIME 유형을 지정 했습니까? 그렇다면, HTML 페이지에 다음 스크립트를 실행

<embed type="application/x-my-extension" id="pluginId"> 
    <script> 
    var plugin = document.getElementById("pluginId"); 
    var result = plugin.myPluginMethod(); // call a method in your plugin 
    console.log("my plugin returned: " + result); 
    </script> 

x-my-extension

NP_GetMimeDescription에 사용되는 확장으로 대체합니다. 브라우저가 올바른 MIME 유형에 맞게 올바르게 플러그인을 등록한 경우 about:plugins을 확인하십시오. enter image description here

+0

Mozilla에는 플러그인을로드하는 plugin-container.exe가 있습니다.그러나 mozilla 브라우저를 실행하면 프로세스 목록에서 실행되는 것을 볼 수 없습니다. firefox.exe에 연결하지 않거나 VS에서 명령 및 인수 옵션을 통해 디버깅 할 수 없습니다. 테스트 응용 프로그램을 사용할 때 디버그 메시지가 나타나지만 모질라에서는 표시되지 않습니다. – manav

0

플러그인 초기화에서 문제가있는 것 같습니다. 당신은 FireBreath을 사용하여 npapi 플러그인을 만들려고 시도 할 수도 있습니다. 왜냐하면 그것은 훨씬 덜 효과적이고 IE에서도 작동하기 때문입니다. 그 아이디어가 마음에 들지 않는다면 Firepreat를 포함한 다른 napapi 플러그인을보고 올바르게 작동하는지 확인할 수 있습니다. 메인 엔트리 포인트에 로깅을 추가하십시오 (어느 유형이든 상관 없음).

또 다른 트릭은 about : config로 가서 ipconfig 설정을 찾아 비활성화하는 것입니다. 당신은 메인 파이어 폭스 프로세스에 연결할 수 있으며 호출되는 경우 중단 점에 도달해야합니다.

다른 아이디어는 FireBreath Debugging Plugins 페이지를 참조하십시오.

+0

감사합니다.이 디버깅 트릭이 저에게 효과적이었습니다. – manav

0

감사합니다. guyz. 마지막으로 브라우저에서 내 플러그인의 기능을로드하고 액세스 할 수 있습니다. 다음은 결과입니다. - 1. 내 플러그인의 MIME 유형이 'application/mozilla-npruntime-scriptable-plugin'이었습니다. 하지만 'application/x-npruntime-scriptable-plugin'을 통해 javascript embed 요소에서 액세스해야합니다. 이 단계 후에 디버거가 내 플러그인의 중단 점을 깨기 시작했습니다. 2. NPPluginFuncs 및 NPNetscapeFuncs의 크기 확인이 실패했습니다. 이는 내 Firefox에서 구현 된 NPAPI의 다른 버전 때문일 수 있습니다. 결국 나는 신생 업체를 얻었으며 지원해 주신 모든 분들께 감사드립니다.