我想知道如果可能的话,如何在打开的Windows资源管理器窗口中获取所选文件的路径。如果没有,至少可以获得打开的Windows资源管理器窗口的文件夹路径吗?
我这样做的最终原因是我正在编写的软件工具需要用户选择文件。我想如果他们已经使用Windows资源管理器移动文件然后启动我的工具,那么最好不要让它们在文件打开对话框中再次导航到该文件夹。然后我的软件可以识别它是否有正确的文件扩展名,如果是,只需询问用户是否要导入该文件。
答案 0 :(得分:1)
所以经过一些更有创意的Google搜索后,我发现了一个使用ShDocVW.dll的ShellWindows类的方法
在VB / A中,引用设置为ShDocVW.dll(Microsoft Internet Controls),这里是我用来获取所有打开的资源管理器窗口中所有选定文件名的集合的代码:
Function GetSelectedFilesInWinExplorers() As Collection
Dim Result As New Collection
Dim ExpWin As Object
Set ExpWin = New SHDocVw.ShellWindows
Dim CurrWin As SHDocVw.InternetExplorer
On Error Resume Next
Dim CurrSelFile As String
For Each CurrWin In ExpWin
If Not CurrWin.Document Is Nothing Then
If Not CurrWin.Document.FocusedItem Is Nothing Then
CurrSelFile = CurrWin.Document.FocusedItem.Path
If CurrSelFile <> "" Then
Result.Add CurrSelFile
Debug.Print CurrSelFile
End If
CurrSelFile = ""
End If
End If
Next CurrWin
Set GetSelectedFilesInWinExplorers = Result
End Function
我不得不使用On Error Resume Next,因为出于某种原因,FocusedItem不会是什么,但仍然会引发错误。那并且我并不真正关心在这种情况下使用它。