DOBON.NET DOBON.NETプログラミング掲示板過去ログ

エクスプローラを並べて表示させたい

環境/言語:[VB.NET]
分類:[.NET]

こちらのサイトを参考にして、
プログラムからフォルダを指定してエクスプローラを開くことが出来ました。

ファイル操作のために
エクスプローラで転送元フォルダと転送先フォルダを並べて表示させたいのですが、
エクスプローラのプロセスのメインウィンドウハンドルをmovewindowに渡して制御できませんでした。

explorer.exeは1つのプロセスで複数動いているみたいです。

何かよいアドバイスがあったらお願いします。
> explorer.exeは1つのプロセスで複数動いているみたいです。
そうですね。
やはりウィンドウハンドルを取得する時に、FindWindowで探すしかないかも知れません。

参考:
VC++ MFCの場合
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200603/06030036.txt

VB.NETでできるかわかりませんが、VB6の場合
CreateObject("Shell.Application").Windows
で列挙されるウィンドウからエクスプローラのウィンドウハンドルを取得できました。

参考:
For Each objWeb In CreateObject("Shell.Application").Windows
    If Instr(TypeName(objWeb.Document), "ShellFolder") > 1 Then
        If objWeb.Document.Folder.Self.Path = "任意のパス" Then
            hWnd = objWeb.hWnd
' 下記の方法でも出来るけど、なぜかフォルダ表示ではなくなってしまう。
' (左のフォルダツリー表示でなくなる)
'            objWeb.Left = 0
'            objWeb.Top = 0
'            objWeb.Width = 500
'            objWeb.Height = 500
        End If
    End If
Next
> explorer.exeは1つのプロセスで複数動いているみたいです。

↑は設定によって変わります。
FindWindowでがんばってみます。

ユーザがエクスプローラの設定を変えている場合にタイトルバーは変わっているかもしれないし、
同じフォルダを既にエクスプローラで開いているかもしれないので
制御が難しそう。。。

とにかくありがとうございました。
解決済み!
■No15560に返信(渋木宏明(ひどり)さんの記事)
>>explorer.exeは1つのプロセスで複数動いているみたいです。
>
> ↑は設定によって変わります。

別プロセスで起動するオプションもあるんですね。

教えていただいてありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板