Windows 上で C++ FireFox 3 プラグイン (拡張機能ではない) を作成するにはどうすればよいですか?
質問
誰かが Windows 上の FireFox 用の C++ ベースのプラグインを開発するためのステップバイステップ ガイドを書いてくれませんか?
のリンクと例 http://www.mozilla.org/projects/plugins/ すべて古くて不正確です。「新規」リンクは 2004 年にページに追加されました。
例としては何でも構いませんが、JavaScript で名前を設定して「Hello {Name}」と表示するプラグインを考えていました。双方向のコミュニケーションを示すために、完全な挨拶を返すプロパティを含めることができます。
それほど重要ではありませんが、プラグインが Chrome でも動作すると便利です。
解決
こちらも参照 http://developer.mozilla.org/en/Plugins 。はい、NPAPI プラグインは Google Chrome でも動作するはずです。
[2015年編集:Chrome は NPAPI のサポートを間もなく削除します http://blog.chromium.org/2014/11/the-final-countdown-for-npapi.html ]
他のヒント
クロスブラウザー (Firefox と IE) で動作するものが必要な場合は、firebreath を検討してください。 http://www.firebreath.org
「Windows で npapi プラグインを構築する方法」に関する一般的な情報については、このテーマに関するブログ投稿がいくつかあります (上記のソースの一部からもリンクされています)。
http://colonelpanic.net/2009/03/building-a-firefox-plugin-part-one/
ただし、私は Firebreath を本当にお勧めします。これは、すべてがどのように機能するかを理解するのに (文字通り) 何ヶ月も費やした研究を行う時間がない人のためにまさに Firebreath を作成したからです。ただし、これをプラグインのベースとして使用したくない場合でも、優れたサンプル コードが数多く見つかります。
Windows 上の Chrome、Firefox、Safari でも動作するはずです。=]
幸運を!
NPAPI を使用してプラグインを作成するのは非常に簡単です。Gecko ディストリビューションに必要な主要なヘッダー ファイルは、npapi.h と npupp.h です。プラグイン DLL または共有ライブラリから NP_Initialize、NP_Shutdown、NP_GetMIMEDescription、NP_GetValue という名前で関数をエクスポートします。また、NP_Initialize 呼び出しで指定されたシンボル テーブルにすべての NPP のハンドラーを入力する必要もあります。機能。
そのセットから実装する主要な関数は、NPP_New と NPP_Destroy です。これらはプラグイン インスタンスのライフサイクルを定義します。<object> または <embed> からリンクされたメディア ファイルを処理する場合は、プラグインがファイルのデータをブラウザ。他にもたくさんあります Gecko プラグイン開発者ガイド.
ニクシサをチェックしてみよう http://code.google.com/p/nixysa/. 。Mozilla SDK でサンプルをビルドしようとしましたが、ビルドするのが困難でした。Nixysa サンプルは簡単に構築できます。さらに、コードは NPAPI を直接使用するよりもはるかにすっきりしています。唯一の欠点は、現時点では Nixysa に関する文書が十分に整備されていないことです。必要に応じて、コールバックを実装する Nixysa サンプルがあります (準備ができたら、Nixysa にパッチを提出する予定です)。