2013-05-31 2 views
1

Я успешно скомпилировал и создал npapi dll в MS на основе проекта mozilla npruntime. Ссылка с: https://developer.mozilla.org/en-US/docs/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio. Запуск mozilla и открыть о: плагины показывают плагин. Но когда я открываю «test.html», плагин не появляется.NPAPI mozilla plugin loading issue

Я протестировал DLL, выполнив отдельное тестовое приложение, где я могу получить доступ к функциям точки входа через NP_INIT l_pInit = (NP_INIT) GetProcAddress (hModule, "NP_Initialize"); , и я могу войти в мою DLL-функцию плагина.

Но с mozilla он не работает. Пожалуйста, предложите.

+0

Если он не отображается в: плагинах (не так ли?), Возможно, вам не хватает записей файла ресурса, или они могут быть неверными (например, [с использованием неправильной локали] (http://stackoverflow.com/questions/13859882/NPAPI-плагин-это-не-получить загруженным-в-светлячок)). –

ответ

0

Вы можете отлаживать непосредственно процесс мозиллы. Просто присоединитесь к процессу. Однако современные браузеры используют отдельный процесс для загрузки сторонних плагинов, поэтому вам придется приложить к этому процессу. Чем вы можете установить точки останова для процедуры загрузки (NP_GetEntryPoints, NP_Initialize) и посмотреть, что там происходит.

Кроме того, если у вас возникли проблемы с подключением к процессу, вы можете просто показать диалоговые окна отладки из вашего кода и сузить область проблем.

UPDATE 1:

Похоже, что браузер делает Nto знать, что он должен использовать плагин. Вы указали тип MIME для hwat для вашего плагина? Если это так, запустите скрипт в 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. Вы должны проверить в about:plugins, если браузер правильно зарегистрировал ваш плагин для правильного типа MIME. enter image description here

+0

У Mozilla есть plugin-container.exe, который загружает плагин.Но когда я запускаю браузер mozilla, я не вижу его в списке процессов. Прикрепление к firefox.exe не работает и не отлаживается с помощью опции команды и аргумента в VS. Отладочные сообщения появляются при использовании моего тестового приложения, но не с помощью mozilla. – manav

0

Похоже, что есть что-то не так в вашей инициализации плагина; вы можете попробовать использовать FireBreath для создания плагина npapi, так как это будет намного меньше работать и работать с IE. Если вам не нравится эта идея, вы можете посмотреть другие плагины npapi (включая FireBreath), чтобы убедиться, что вы делаете все правильно. Добавьте регистрацию (любого типа, который вам нравится) к основным точкам входа и посмотрите, в какой точке она не работает.

Еще один трюк - перейти к: config и найти настройки плагинов ipc и отключить их; то вы можете подключиться к основному процессу firefox, и он должен ударить ваши точки останова, если они вызываются.

См. Страницу FireBreath Debugging Plugins Другие идеи.

+0

Спасибо, этот отладочный трюк работал для меня – manav

0

Thanks guyz. Наконец, я могу загрузить и получить доступ к функциям моего плагина в браузере. Ниже приведены выводы: - 1. Хотя мой MIME-тип моего плагина в файле ресурсов был «application/mozilla-npruntime-scriptable-plugin». Но мне нужно получить доступ к нему из встроенного элемента javascript через «application/x-npruntime-scriptable-plugin». После этого шага отладчик начал ломать точки разрыва плагина. 2. Проверка размера NPPluginFuncs и NPNetscapeFuncs была неудачной, может быть из-за другой версии NPAPI, реализованной в моем firefox. В конце я получил стартап и поблагодарил всех вас за поддержку.