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

フォルダが既に開かれているかどうかを調べる方法

環境/言語:[VS2010 Express,vista]
分類:[.NET]

フォルダfooを開くとき
System.Diagnostics.Process.Start( "EXPLORER.EXE", "/n, C:\My Documents\foo")
を使っていますが,すでに開かれている場合は2つ開いても意味がないので
処理をスキップしたいのです.
フォルダfooが既に開かれているかどうかを調べる方法はありますか?
連投すみません.
■No27286に返信(JKさんの記事)
http://i2o.sakura.ne.jp/wordpress/?p=457
にVBAでの一覧取得が載っているのでそれを参考にすれば出来ると思います。

.net用に若干書き換えて成功しました.ありがとうございました.

Private Sub getOpenDirList()
'オブジェクトの取得
Dim sh As Object = CreateObject("Shell.Application")
'コレクションオブジェクトの取得
Dim s As String
Dim result As String
For Each wobj In sh.Windows
'Internt Explorerが開いているファイルは除外する。
If (wobj.FullName Like "*Explorer.EXE") = True Then
s = wobj.LocationURL
'オブジェクトフォルダは除外する
If Microsoft.VisualBasic.Left(s, 10) <> "file:///::" Then
' 最初の"file:///"を取り除く
If s Like "file:///?:*" Then
'ローカル
s = Microsoft.VisualBasic.Right(s, Len(s) - Len("file:///"))
Else
'サーバ
s = Microsoft.VisualBasic.Right(s, Len(s) - Len("file:"))
End If
' 左から1文字ずつチェックして文字列を置き換えていく
result = ""
For i = 1 To Len(s)
Select Case Mid(s, i, 1)
Case "/"
result = result & "\"
Case "%"
result = result & Chr(CInt("&H" & Mid(s, i + 1, 2)))
i = i + 2
Case Else
result = result & Mid(s, i, 1)
End Select
Next
TextBox1.AppendText(result & vbCrLf)
End If
End If
Next
End Sub
解決済み!

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