エクスプローラ上の内容を最新にするには

解決


とおりすがりの犬  2006-03-14 20:02:28  No: 130626

みなさん、おはようございます。

掲題の件なのですが、可能かどうかを教えてください。
開発環境:
  WindowsXP
  VB6.0SP6

VB6.0上では、以下のプログラムを作成しています。

1.ネットワーク上にある他クライアントやサーバーの接続可能な
  共有フォルダを探して、ドライブに割り当てる。

2.ローカルハードディスク上の規定されたフォルダ上にあるファイルを
  割り当てたドライブにコピーする。

3.コピーがすんだら、割り当てたドライブを切断して終了する。

可能かどうかを知りたいのは次です。

上記のプログラムの起動前に、あらかじめエクスプローラを立ち上げて
放置しておきます。プログラムの終了後、エクスプローラを見ると、
プログラムが割り当てたドライブが「?」マーク付きで表示されています。
(もう使えないことを示しているマークだろう。F5キーで最新の状態に
してやるとドライブは消えます)
VB側からエクスプローラを最新の状態に更新するように(F5キーを押す
ように)働きかけることは可能でしょうか。


魔界の仮面弁士  2006-03-14 20:29:58  No: 130627

> VB側からエクスプローラを最新の状態に更新するように

手元の WinXP 環境では、Refresh2メソッドを呼び出すことで、
マイコンピュータ / エクスプローラの内容が更新されました。

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/methods/refresh2.asp


とおりすがりの犬  2006-03-14 23:59:55  No: 130628

VBではWebBrowserを使用することで
使えるメソッドですよね?

エクスプローラの内容を更新するの
ですが、WebBrowserのNavigateに
マイコンピュータなどを与えてみようと
考えていますが、どうでしょうか?


魔界の仮面弁士  2006-03-15 00:04:25  No: 130629

> VBではWebBrowserを使用することで
> 使えるメソッドですよね?
WebBrowser でも勿論使えますが、既に起動済みの
マイコンピュータやエクスプローラにも使えますよ。
(ShellWindows を使うと、起動済みの IE や Explorer を列挙できます)

> 考えていますが、どうでしょうか?
実際に試してみた結果は、どうでしたか?


とおりすがりの犬  2006-03-15 00:13:19  No: 130630

>実際に試してみた結果
どうも、だめっぽいです(ファイルを要求するみたい)ね。

ShellWindowsをつかってウィンドウを列挙するやりかたに
変えてみます。


とおりすがりの犬  2006-03-15 00:15:51  No: 130631

追記
SHGetSpecialFolderLocation
あたりを使って、マイコンピュータの在り処が分かるかなと
調べてました。。。


とおりすがりの犬  2006-03-15 01:27:16  No: 130632

できました。

以下のコードで実現できました。

Dim SO As Object
Dim ShWins As Object
Dim IE As Object

Set SO = CreateObject("Shell.Application")
Set ShWins = SO.Windows()
For Each IE In ShWins
    If InStr(IE.LocationURL, "file:///") <> 0 Then  'ファイルを指している場合(エクスプローラと思われる)
        Call IE.ExecWB(22, 0, 0, 0) 'OLECMDID_REFRESH
        DoEvents
    End If
Next

※アドレスがURLではなくてどこかのファイル位置を示しているものに
  無差別にREFRESHを投げていますが、やりたいことはできたので
  よしとしてます。

#魔界の仮面弁士さんは、他の掲示板でも活躍されているのですね。
  たまたまサンプルを上記ロジックの元になるサンプルを見つけて
  いただいたのですが、ご本人だとは...^^
  ご助力いただき、ありがとうございました。
  それから、WebBrowserは面白いですね。今回の質問とは別になりますが
  これを使って何か作ってみようかなと思っています。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加