ファイルを選択する方法を提供する FireFox 用のプラグインを作成しました。このメソッドは、Win API 関数を呼び出しますGetOpenFileName
。ダイアログ「ファイルを開く」が表示され、他のウィンドウに切り替えない場合、すべて正常に動作します。ブラウザ ウィンドウをクリックするとすべてがブロックされ、しばらくするとプラグインがクラッシュしたというメッセージが表示されます。この問題は FireFox でのみ発生し、Chrome と Safari では発生しません。GetOpenFileName
独自のメッセージループを持っているという事実と関連していると思います。この動作を修正する簡単な方法はありますか?
たとえば、関数SHBrowseForFolder
は FireFox で正常に動作します。
FireFox のソースには、おそらくこの問題を解決できるクラスMessageLoop
とメソッドSetNestableTasksAllowed()
があります (少なくとも、ヘッダーの説明からこの結論を得ることができます)。しかし、 xulrunner-sdk-13.0.1 には、MessageLoop
function を持つ xul.lib がありますが、 class を持つヘッダーはありませんGetIOMessageLoop
。おそらく、FireFox ソースからヘッダーを取得することは可能ですが、VS 2010 のプロジェクトでそれらを使用するのは簡単ではないと思います