2010-03-25 68 views
1

我想知道如何在可打開的Windows資源管理器窗口中獲取所選文件的路徑。如果沒有,至少可以獲得打開的Windows資源管理器窗口的文件夾路徑嗎?在瀏覽器窗口中獲取所選文件

我正在做這件事的最終原因是我正在寫的一個軟件工具需要用戶選擇一個文件。我想,如果他們已經使用Windows資源管理器移動文件,然後啓動我的工具,最好不要讓它們再次在文件打開對話框中導航到該文件夾​​。然後,我的軟件就能夠識別它是否具有正確的文件擴展名,如果有,請詢問用戶是否要導入該文件。

+0

我想雷蒙德陳回答完全是你的問題與此博客文章:http://blogs.msdn.com/oldnewthing/archive/2004/07/20/188696.aspx它的一些相當令人印象深刻的代碼,我認爲,但正如他所說:「這不是一項固有的艱鉅任務,你只需要拼湊很多小塊。」 ;) –

回答

1

所以經過一些更有創意的谷歌搜索,我發現使用ShellWindows類的方法,由SHDOCVW.DLL

在VB/A,設置爲SHDOCVW.DLL(Microsoft Internet控制)的引用,這裏的代碼我以前只是獲得所有被選中的文件名集合中的所有打開的IE窗口:

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 

我不得不使用上的錯誤繼續下一步,因爲某些原因,FocusedItem不會是什麼,但會仍然會引發錯誤。這和我真的不在乎在這種情況下使用它。

相關問題