3

FireBreath を使用して、それぞれのプラットフォーム用のネイティブ ライブラリを使用するクロス ブラウザー プラグインを作成しています (Windows 用の .NET ベースの DLL と Mac 用の Objective-C ベースの dylibs/frameworks)。ライブラリは、最終的に他のウィンドウの前面 (特にブラウザー ウィンドウの前面) に表示される UI を表示します。Windows の場合、win32 API を使用してウィンドウ ハンドラーを渡し、それをフォアグラウンドに表示します。これは今のところ問題なく動作しています。ただし、現在 Mac に適した回避策を見つけることができないため、ウィンドウは常に Mac のブラウザーの背後に表示されます。この問題の回避策はありますか?

私は次のアプローチを試しましたが、あまり成功しませんでした:

1) NSWindow のレベルをより高い値 (例: NSFloatingWindowLevel) に設定し、orderFront メソッドを呼び出します。

2) NSApp で activateIgnoringOtherApps プロパティを設定し、makeKeyAndOrderFront メソッドを呼び出します。

この点でどんな助けでも大歓迎です。

4

2 に答える 2

2

サポートしてくれてありがとう。私はなんとか問題を修正しました。スレッドの完全性のためにここに返信しています。

この問題は、FireBreath とは関係のない Objective-C の基本的な事実によって引き起こされました。NSWindow のウィンドウ オブジェクトは、メソッドが呼び出されて前面に表示されたときに、初期化されませんでした (nil)。それが修正されたら、ウィンドウレベルを NSFloatingWindowLevel に設定するだけでこの問題が修正されました。

于 2013-05-16T05:25:41.107 に答える