C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

指定したファイルフォルダを前面にする方法 /和ぎゃんらんど (17/12/28(Thu) 12:14) #86221


親記事 / 返信無し
■86221 / 親階層)  指定したファイルフォルダを前面にする方法
□投稿者/ 和ぎゃんらんど (1回)-(2017/12/28(Thu) 12:14:04)

分類:[.NET 全般] 

2017/12/28(Thu) 12:24:27 編集(投稿者)
2017/12/28(Thu) 12:24:23 編集(投稿者)
2017/12/28(Thu) 12:17:19 編集(投稿者)
<pre><pre>2017/12/28(Thu) 12:15:25 編集(投稿者)
<pre><pre>2017/12/28(Thu) 12:14:31 編集(投稿者)

<pre><pre>あるファイルパスを指定し、
そのファイルパスが入ったフォルダーがエクスプローラー上で開かれていなければ、
そのフォルダを開き、
既にそのフォルダーが開かれていなければ、
そのウインドウを前面に表示するプログラムを作成しました。

このプログラムで一応動作するのですが、
このままだと、指定したフォルダーが複数開かれていた場合、
それら全てが前面表示されてしまいます。
どれが一つだけで良いので、
            'Thread.Sleep(200)
                        'Marshal.ReleaseComObject(win)
                        'Exit Sub

というところのコメントアウトを外せば、うまくいくはずなのですが
なぜかこのコメントアウトを外すとウインドウが前面表示されません。
一体何が原因でしょうか?



    Sub Folder_Open_Check2(filepath$)

        Dim folpath As String = Get_Parent(filepath)

        If Len(folpath) = 2 Then

            folpath &= "\"

        End If


        Dim wins As New SHDocVw.ShellWindows



        For i As Integer = 0 To wins.Count - 1

            Dim win As IWebBrowser2 = CType(wins.Item(i), IWebBrowser2)

            If win Is Nothing Then Continue For

            Dim Name As String = Path.GetFileNameWithoutExtension(win.FullName.ToString)

            If Name.ToUpper() = "EXPLORER" Then

                Dim oDc2 As String = win.LocationURL

                If oDc2 <> "" Then

                    Dim u As New Uri(oDc2)
                    Dim Path2 As String = u.LocalPath + Uri.UnescapeDataString(u.Fragment)


                    If Path2 = folpath Then


                        SetForegroundWindow(CType(win.HWND, IntPtr))
            ’Thread.Sleep(200)
                        'Marshal.ReleaseComObject(win)
                        'Exit Sub

                    End If

                End If
            End If

            Marshal.ReleaseComObject(win)



        Next i




        Process.Start("EXPLORER.EXE", "/select,""" & filepath & """")


    End Sub

</pre></pre></pre></pre></pre></pre>

[ □ Tree ] 返信 編集キー/


管理者用

- Child Tree -