-1

我想知道微软库的Windows APi Code Pack类库是否提供了一种直接的方式来迭代Windows资源管理器实例以检索每个资源管理器实例的地址栏的当前路径,简单来说,我需要得到一个包含所有资源的列表Explorer.exe实例打开的路径。

这是我要检索的文本(来自 explorer.exe 的所有运行实例)

在此处输入图像描述

我不知道这是否可能使用Windows API Code Pack然后我没有任何代码来证明我的进度(为零),我只是要求提供有关此的信息以进行更好的调查,但是任何类型的代码示例都会非常感谢。

如果Windows API Code Pack无法完成任务,我有什么替代方案来实现这一点?也许Microsoft UI automation

PS:我发现了使用 interop 检索它的方法Microsoft Internet Controls,解决方案在这个 url中进行了解释,但我真的很想学习如何使用它Windows API Code Pack

4

1 回答 1

2

这将为您提供大部分的帮助,首先,在Project -> ReferencesMicrosoft Shell Controls and Automation中添加 COM 选项卡的引用和Microsoft Internet Controls来自 COM 选项卡的引用

Imports Shell32

Private exList As New List(Of String) '

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    Dim exShell As New Shell

    exList.Clear()

    For Each win As ShellBrowserWindow In DirectCast(exShell.Windows, IShellWindows)
        thisPath = ""
        If TryCast(win.Document, IShellFolderViewDual) IsNot Nothing Then
            thisPath = DirectCast(win.Document, IShellFolderViewDual).FocusedItem.Path
        ElseIf TryCast(win.Document, ShellFolderView) IsNot Nothing Then
            thisPath = DirectCast(win.Document, ShellFolderView).FocusedItem.Path
        End If

        If String.IsNullOrEmpty(thisPath) = False Then
            ExplorerFiles.Add(thisPath)
        End If

    Next
End Sub

测试输出:

C:\Temp\_test
M:\Books - Non Fiction\Crusades - Iron Men and Saints\01 Iron Men and Saints.mp3
G:\_Video\_Movies

有时它似乎也报告第一个项目被选中。 这可能是更好的方法

于 2014-10-02T18:12:40.593 回答