IEをVBによって閉じようとしているのですが閉じることができませんでした。
試みたのはクラス名よりFindWindowを使用してハンドルを取得し、
そのハンドルをSendMessageで閉じようとしましたができませんでした。
(取得したハンドルにより最小化等はできたのでハンドルは取得できていると思います)
電卓やメモ帳は閉じることができました。
わかる方がいらっしゃったらどのようにすればよいか教えてください。
宜しくお願いします。
InternetExplorerオブジェクトのQuitメソッドを使えばOKです。
魔界の仮面弁士さん、早速のレスありがとうございます。
VBから起動したIEではなく、通常に起動した(または外部PGより開かれた)
IEをVBで作成したPGにより閉じたいのです。
そういった操作はできるのでしょうか?
できるとしたらInternetExplorerオブジェクトでできるのでしょうか?
ShellWindowsコレクションオブジェクトを使うと、
起動済みのInternetExplroerオブジェクトを列挙できますよ。
たびたびありがとうございます。
ShellWindowsコレクションオブジェクトを使ってやるというのは、
別のHPで見つけたのですが下の様な感じですか?
(魔界の仮面弁士さんがレスしてたみたいでした^^;)
For Each IEApp In CreateObject("Shell.Application").Windows()
IEApp.Quit
Next
これで実行してみたら確かにIEを閉じることができたのですが、
エクスプローラも閉じてしまったことがあります。
どうやれば起動中のIEのみを全て閉じるようにできるのでしょうか?
(ちなみに私はこのFor文の1行目が理解できていません・・・^^;)
FullName プロパティで判別するって言うのはどうですか?
このプロパディは実行ファイルのパスを返すんで、
iexplore.exe で引っ掛ければ判定できるはず。
For Each IEApp In CreateObject("Shell.Application").Windows()
If InStr(1, IEApp.fullname, "iexplore.exe", vbTextCompare) > 0 Then
IEApp.Quit
End If
Next
こんな感じ!
ところで、(IEではなく)エクスプローラのアドレスバーにURLを入力しても、
ページを表示することができますよね。また、その逆でIEに "C:\" などの
フォルダを表示させることもできますよね。
———そのような場合、
「Webページを開いていたエクスプローラ」
と
「ローカルフォルダを開いていたInternet Explorer」
のどちらを終了させたいのでしょうか?
常にIEだけを終了させたいのであれば、okuさんの回答のように、
FullNameプロパティを判断するのが良いと思います。一方で、
表示させている内容で判断するのであれば、Documentプロパティを
TypeName関数等で型判定してやればOKかと。
okuさん、魔界の仮面弁士さんありがとうございました。
今回は単純にIEを終了させたかっただけでしたので、
okuさんのロジックにより目的の動作ができました。
大体やってる内容も理解することができました。
本当にありがとうございました。
ツイート | ![]() |