3

Firefox拡張機能もインストールするC++プログラムを作成しました。したがって、この拡張機能を機能させるには、Firefoxを再起動する必要があります。

では、ユーザーがFirefoxを使用しているときにFirefoxを再起動するように依頼するにはどうすればよいですか?

4

2 に答える 2

1

この種の質問は、この質問と重複しているように見えます。winapi-C++でその名前でプロセスハンドルを取得するにはどうすればよいですか。基本的に、あなたが探しているのはプロセス「firefox.exe」(「target.exe」の代わりに)を「見つける」ことであり、それが成功した場合は、警告ダイアログボックスを表示してfirefoxを閉じて再実行します。 -開いた。そうでない場合は、インストールなどを続行します。これがお役に立てば幸いです。

于 2012-06-04T14:45:31.487 に答える
0

キャプションを使用してFirefoxのメインウィンドウを見つけます。Firefoxはメインウィンドウのキャプションに現在のページのタイトルを追加していると思いますので、FindWindow十分ではありません。を使用してトップレベルのウィンドウを列挙EnumWindowsし、キャプションに「MozillaFirefox」が含まれているウィンドウを見つけてください。ウィンドウハンドルがある場合は、WM_CLOSEそれにメッセージを送信し(PostMessageターゲットウィンドウがメッセージを処理するのを待つを使用)、ウィンドウハンドルが消えるのを待ちます。ポップアップが表示され、同じ方法で見つけて閉じることができます。Firefoxのメインウィンドウが数秒経っても開いている場合(繰り返し検索してみてください)、電話をかけることができますTerminateProcess(これが必要GetWindowThreadProcessIdになりますOpenProcess)。ウィンドウが閉じたら、を呼び出してFirefoxを再起動しCreateProcessます。(Web上にはこれらすべてのAPI関数の例がたくさんあります。)

于 2012-06-04T14:46:33.363 に答える