1

さて、現在、chromeにはプロセス外のプラグインがあります。Firefox4は同じモデルを使用します。

これは、プラグインプロセスがブラウザプロセスから分離されたことを意味します。プラグインプロセスにはウィンドウがまったくない可能性があります。

私のプラグインはに基づいていNSViewます。

cocoaイベントモデルの前は、ブラウザプロセスでアクセスできる場合NSWindow、ウィンドウ内のcontentViewのサブビューとしてmy_viewを追加するだけです。

[[the_window contentView] addSubview:my_view] 

イベントを自分で処理する必要はありません。それ自体が機能しました。

しかし今、私はイベントプロセスコードに変換NPCocoaEventsします。NSEvents

自分で変更する必要がありますか?

NSEventsまた、ホイールマウスイベントなどのインスタンスを作成することはできません。

どうすればいいですか?

私は間違った方法でアプローチしましたか?

教えてください。

4

2 に答える 2

2

自分で変更する必要がありますか?

NSEvents を既存の NSView に転送するアプローチを使用する予定がある場合は、はい。元の NSEvents にアクセスする方法はありません。それらはプラグイン プロセスには存在しません。

もう 1 つのオプションは、ネイティブ コントロールの使用をやめて、独自の描画とイベント処理を行うことです。これは、ほとんどの NPAPI プラグインが機能する方法です。

3 番目の可能性は、プラグイン コンテンツ用に別のウィンドウを開き、そのウィンドウにビューを配置することです。これは NPAPI で技術的にサポートされておらず、完全ではありませんが、長期的なオプションを検討しながらプラグインを機能させるための短期的な方法になる可能性があります。

私は間違った方法でアプローチしましたか?

はい、以前に行っていたことはサポートされていないハックであり、NPAPI の使用方法ではありませんでした。ブラウザーのウィンドウにビューを追加することは、実装の詳細であり、いつでも変更される可能性がある、ブラウザーのビュー階層に関することを前提としています。

于 2010-11-18T14:36:45.833 に答える
1

FireBreathフレームワークを使用してプラグインを作成することも 1 つのオプションです。これには、イベントのネゴシエーションと描画モデル、およびイベントの抽象化のための多くの抽象化が既に含まれているためです。立ち上がって行くのはとても簡単です。

于 2010-12-02T07:30:10.290 に答える