2014-10-02 42 views
-1

我想知道Microsoft的Windows APi Code Pack库的类库是否提供了一种直接的方式来迭代Windows资源管理器实例,以检索每个资源管理器实例的地址栏的当前路径,简而言之,我需要获取一个列表所有通过Explorer.exe实例打开的路径。使用Windows API Code Pack可以获取Windows资源管理器的AddresBar路径吗?

这是我想检索文本(从Explorer.exe的所有正在运行的实例)

enter image description here

,如果这是可能使用Windows API Code Pack那么我没有任何我不知道代码来展示我的进度(这是零),我只是要求获得有关此信息的更好的调查结果,但任何类型的代码示例都将非常感谢。

如果Windows API Code Pack不能帮助任务,我有什么替代方案可以实现这一点?也许Microsoft UI automation

PS:我doscovered使用互操作Microsoft Internet Controls检索的方式,解决在this url解释,但我真的很感兴趣,到学会如何做到这一点使用Windows API Code Pack

+1

*“一个直接的方式来迭代Windows资源管理器实例来检索每个实例的当前路径”*和*“我需要获得一个包含由Explorer.exe实例打开的所有路径的列表”*非常不同的问题。资源管理器可以打开更多路径,只是它的工作目录。这听起来像一个[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem),你可以编辑你的问题,并解释你正在尝试做什么,这“开放路径列表”可帮助您解决问题? – 2014-10-02 17:54:46

+0

是@Scott Chamberlain也许我没有正确地表达我的意图,我编辑了这个问题来添加这个细节:'检索每个资源管理器实例的地址栏的当前路径',我的英语不太好,如果它还不清楚请说出来,感谢您的评论 – ElektroStudios 2014-10-02 17:57:18

+0

此链接:http://omegacoder.com/?p=63已死 – 2014-12-29 08:42:33

回答

2

这将让你大部分的途中有,首先,Microsoft Shell Controls and AutomationMicrosoft 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 

有时候它似乎也报告第一个项目被选中。 This might be a better way

+0

这是一个使用Windows API Code Pack?或Micosoft Shell和控件的解决方案,或者? Shell32命名空间在Windows API代码包中没有针对我进行过注册,请您指定它吗?感谢您的回答! – ElektroStudios 2014-10-02 18:25:10

+0

从**项目 - >参考中的COM选项卡中添加对“Microsoft Shell Controls and Automation”的参考** – Plutonix 2014-10-02 18:28:01

+0

谢谢,但它返回当前目录中的第一项,而不是在地址栏中写入的目录, m测试它有点发现它是否可以帮助检索地址栏目录,谢谢 – ElektroStudios 2014-10-02 18:40:11

相关问题