- ベストアンサー
ブラウザをすべて閉じたい
APIか何かでブラウザを閉じる方法はあるのでしょうか? ieを終了させる方法になるのでしょうがバージョンがあがったりしてプログラムのパス名も変わるので難しいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>SendMessage(hW,WM_CLOSE,0,0); Send? Postしてみてください。 どうでしょう?
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
ウィンドウをEnumWindowsで列挙して、該当するキャプションのウィンドウに対してWM_CLOSEをPostするとか。
お礼
ありがとうございます。 ウィンドウタイトルが"Internet Explore"や"Netscape Navigator"を含んでいるかどうかでアプリを終了させるかどうかを決めたらいいのでしょうか?
補足
ご指摘を参考に 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が終了しません。 何が悪いのでしょうか?
色々ありますよ。 一例としては、現在起動中のプログラムの一覧を抽出して、IEのプロセスに手当たり次第に DESTROY メッセージを投げてしまうとか。 今パッと思いつくのはそれだけですが、探せば他にも方法があるかもしれません。
お礼
ありがとうございます。 バージョンが変わって名前が変わると間違えてしまいますね。ネスケも同様に終了させたいのですが・・・
お礼
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; } とすれば動きました。 ありがとうございました。