Firefox拡張機能もインストールするC++プログラムを作成しました。したがって、この拡張機能を機能させるには、Firefoxを再起動する必要があります。
では、ユーザーがFirefoxを使用しているときにFirefoxを再起動するように依頼するにはどうすればよいですか?
この種の質問は、この質問と重複しているように見えます。winapi-C++でその名前でプロセスハンドルを取得するにはどうすればよいですか。基本的に、あなたが探しているのはプロセス「firefox.exe」(「target.exe」の代わりに)を「見つける」ことであり、それが成功した場合は、警告ダイアログボックスを表示してfirefoxを閉じて再実行します。 -開いた。そうでない場合は、インストールなどを続行します。これがお役に立てば幸いです。
キャプションを使用してFirefoxのメインウィンドウを見つけます。Firefoxはメインウィンドウのキャプションに現在のページのタイトルを追加していると思いますので、FindWindow
十分ではありません。を使用してトップレベルのウィンドウを列挙EnumWindows
し、キャプションに「MozillaFirefox」が含まれているウィンドウを見つけてください。ウィンドウハンドルがある場合は、WM_CLOSE
それにメッセージを送信し(PostMessage
ターゲットウィンドウがメッセージを処理するのを待つを使用)、ウィンドウハンドルが消えるのを待ちます。ポップアップが表示され、同じ方法で見つけて閉じることができます。Firefoxのメインウィンドウが数秒経っても開いている場合(繰り返し検索してみてください)、電話をかけることができますTerminateProcess
(これが必要GetWindowThreadProcessId
になりますOpenProcess
)。ウィンドウが閉じたら、を呼び出してFirefoxを再起動しCreateProcess
ます。(Web上にはこれらすべてのAPI関数の例がたくさんあります。)