VBからIEを閉じる

解決


ふむふむ  2003-11-21 19:04:11  No: 80524  IP: [192.*.*.*]

IEをVBによって閉じようとしているのですが閉じることができませんでした。
試みたのはクラス名よりFindWindowを使用してハンドルを取得し、
そのハンドルをSendMessageで閉じようとしましたができませんでした。
(取得したハンドルにより最小化等はできたのでハンドルは取得できていると思います)
電卓やメモ帳は閉じることができました。
わかる方がいらっしゃったらどのようにすればよいか教えてください。
宜しくお願いします。

編集 削除
魔界の仮面弁士  2003-11-21 20:27:12  No: 80525  IP: [192.*.*.*]

InternetExplorerオブジェクトのQuitメソッドを使えばOKです。

編集 削除
ふむふむ  2003-11-21 23:11:27  No: 80526  IP: [192.*.*.*]

魔界の仮面弁士さん、早速のレスありがとうございます。
VBから起動したIEではなく、通常に起動した(または外部PGより開かれた)
IEをVBで作成したPGにより閉じたいのです。
そういった操作はできるのでしょうか?
できるとしたらInternetExplorerオブジェクトでできるのでしょうか?

編集 削除
魔界の仮面弁士  2003-11-21 23:50:08  No: 80527  IP: [192.*.*.*]

ShellWindowsコレクションオブジェクトを使うと、
起動済みのInternetExplroerオブジェクトを列挙できますよ。

編集 削除
ふむふむ  2003-11-22 20:28:37  No: 80528  IP: [192.*.*.*]

たびたびありがとうございます。
ShellWindowsコレクションオブジェクトを使ってやるというのは、
別のHPで見つけたのですが下の様な感じですか?
(魔界の仮面弁士さんがレスしてたみたいでした^^;)

For Each IEApp In CreateObject("Shell.Application").Windows()
IEApp.Quit
Next

これで実行してみたら確かにIEを閉じることができたのですが、
エクスプローラも閉じてしまったことがあります。
どうやれば起動中のIEのみを全て閉じるようにできるのでしょうか?
(ちなみに私はこのFor文の1行目が理解できていません・・・^^;)

編集 削除
oku  URL  2003-11-22 21:58:11  No: 80529  IP: [192.*.*.*]

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
こんな感じ!

編集 削除
魔界の仮面弁士  2003-11-23 22:08:16  No: 80530  IP: [192.*.*.*]

ところで、(IEではなく)エクスプローラのアドレスバーにURLを入力しても、
ページを表示することができますよね。また、その逆でIEに "C:\" などの
フォルダを表示させることもできますよね。

———そのような場合、
  「Webページを開いていたエクスプローラ」

  「ローカルフォルダを開いていたInternet Explorer」
のどちらを終了させたいのでしょうか?

常にIEだけを終了させたいのであれば、okuさんの回答のように、
FullNameプロパティを判断するのが良いと思います。一方で、
表示させている内容で判断するのであれば、Documentプロパティを
TypeName関数等で型判定してやればOKかと。

編集 削除
ふむふむ  2003-11-24 00:15:04  No: 80531  IP: [192.*.*.*]

okuさん、魔界の仮面弁士さんありがとうございました。
今回は単純にIEを終了させたかっただけでしたので、
okuさんのロジックにより目的の動作ができました。
大体やってる内容も理解することができました。
本当にありがとうございました。

編集 削除