プロミングからIEを終了させたいのですが。
他のアプリケーションは利くのに
IEだけどうしても終了することが
できません。
コードは
hWnd = FindWindow(vbNullString, " Windows Internet Explorer")
Call PostMessage(hWnd, 18, 0, 0)
ハンドルは取得できているみたいですが、
PostMessageの方が利いていないみたいです。
どうにかしてIEを終了させたいのですが
消す方法はないものでしょうか?
これを修正する方法か別方法なんかがあったら教えてください。
宜しくお願いします。
ウィンドウハンドルから終了させる方法については試していません。
ただ,IEを終了させたいだけなら,シェルオブジェクトを取得してIEを検索して,IE.Quit()で終了させることができると思います。
すいません、shellobjectについて調べましたが
終了するようなメソッドは見つかりませんでしたが?
ちょっと具体的に教えてもらえないでしょうか?
なんだか全く同じに見えますが
http://madia.world.coocan.jp/vb/vb_bbs/200603/200603_06030023.html
IEを1つ閉じるコードは例えば次のようになると思います。
エラー処理などありませんし,確実に動作するか保証できませんが,
一応,実行するたびに開いているIEが1つ閉じます。
シェルオブジェクトにはExplorerも含まれるので,Documentプロパティの
型を調べてIEと区別するのがポイントです。
「Microsoft HTML Object Library」を参照設定してください。
Const INTERACTIVE = 3
Dim shell As Object
Set shell = CreateObject("Shell.Application").Windows
Dim obj As Object
For Each obj In shell
Dim state As Integer
state = CInt(obj.ReadyState)
If state >= INTERACTIVE Then
Dim doc As Object
Set doc = obj.Document
If TypeOf doc Is HTMLDocument Then
Call obj.Quit
End If
End If
Next
すいません,先のコードですが,1行抜けていました。
(Call obj.Quitの後のExit For)
Const INTERACTIVE = 3
Dim shell As Object
Set shell = CreateObject("Shell.Application").Windows
Dim obj As Object
For Each obj In shell
Dim state As Integer
state = CInt(obj.ReadyState)
If state >= INTERACTIVE Then
Dim doc As Object
Set doc = obj.Document
If TypeOf doc Is HTMLDocument Then
Call obj.Quit
Exit For
End If
End If
Next
回答ありがとうございました。
postmessageの第二引数、WM_QUITをWM_CLOSEにしたら
消せました。
わざわざコードまで書いてくださった
YASさんありがとうございました。
いつか機会があったら上記のコードも
参考にしたいと思います。
ありがとうございました!
ツイート | ![]() |