• ベストアンサー

ブラウザをすべて閉じたい

APIか何かでブラウザを閉じる方法はあるのでしょうか? ieを終了させる方法になるのでしょうがバージョンがあがったりしてプログラムのパス名も変わるので難しいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>SendMessage(hW,WM_CLOSE,0,0); Send? Postしてみてください。 どうでしょう?

keyguy
質問者

お礼

BOOL CALLBACK EnumProc(HWND hW,LPARAM) { char s[999]; SendMessage(hW,WM_GETTEXT,999,(LPARAM)s); if(string(s).find("Microsoft Internet Explorer")==string::npos)return TRUE; PostMessage(hW,WM_CLOSE,0,0); return TRUE; } とすれば動きました。 ありがとうございました。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

ウィンドウをEnumWindowsで列挙して、該当するキャプションのウィンドウに対してWM_CLOSEをPostするとか。

keyguy
質問者

お礼

ありがとうございます。 ウィンドウタイトルが"Internet Explore"や"Netscape Navigator"を含んでいるかどうかでアプリを終了させるかどうかを決めたらいいのでしょうか?

keyguy
質問者

補足

ご指摘を参考に BOOL CALLBACK EnumProc(HWND hW,LPARAM) { char s[999]; SendMessage(hW,WM_GETTEXT,999,(LPARAM)s); if(string(s).find("Microsoft Internet Explorer")==string::npos)return TRUE; SendMessage(hW,WM_CLOSE,0,0); return TRUE; } を書いて EnumWindows(&EnumProc,NULL); を実行したのですがピーンという音が鳴るだけでInternetExplorerが終了しません。 何が悪いのでしょうか?

noname#25358
noname#25358
回答No.1

 色々ありますよ。  一例としては、現在起動中のプログラムの一覧を抽出して、IEのプロセスに手当たり次第に DESTROY メッセージを投げてしまうとか。  今パッと思いつくのはそれだけですが、探せば他にも方法があるかもしれません。

keyguy
質問者

お礼

ありがとうございます。 バージョンが変わって名前が変わると間違えてしまいますね。ネスケも同様に終了させたいのですが・・・

関連するQ&A