2009-09-08 35 views
0

在以下代碼示例中,其中filePath是:E:\[D]\My Collection(由Picasa在歸檔媒體時生成的文件夾)在XP(32位)上可以正常工作。我最近在vista 64-bit上運行了這個...和ParseDisplayName錯誤,「值不在預期範圍內」。所有其他文件夾(沒有'[D]')工作正常。任何幫助,將不勝感激。在Vista中使用ParseDisplayName的有效路徑不是非常有效。爲什麼?

 
try 
{ 
    int cParsed = 0; 
    int pdwAttrib = 0; 
    string filePath = Path.GetDirectoryName(file); 
    pidlMain = IntPtr.Zero; 
    folder.ParseDisplayName(IntPtr.Zero,IntPtr.Zero,filePath,out cParsed,out pidlMain,out pdwAttrib); 
} 
catch (Exception ex) 
{ 
Marshal.ReleaseComObject(folder); 
throw ex; 
} 
+0

我也給了Windows的API代碼包嘗試(在Vista上)。 http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=WindowsAPICodePack&DownloadId=6840 示例代碼中包含的縮略圖演示在受到[D]文件夾時也會崩潰。 - Craig – clsturgeon 2009-09-09 23:43:45

回答

0

發生這種情況(不考慮代碼包的,你可以直接使用外殼API和獲取解析名稱瑞普吧)在Vista中,當你選擇在通用文件對話框(文件夾或任何類型的開放式的對話框)從左側樹視圖。

例如 - 使用您提到的示例 - 代碼包的示例。運行示例,從CFD中選擇瀏覽,從左側樹視圖中選擇您的文件夾。如果你進入文件夾,然後點擊「打開」,你也會遇到同樣的問題。您得到的解析名稱是:

c:\folder\folder(注意重複的文件夾)。

這是Vista中的一個已知的問題......恐怕沒有修補它(或至少我所知道的 - 除非你切換到Win7的:-))

+0

Keeron - 謝謝你。我明白你的意思了。我需要找更多時間來查看API代碼包的其餘部分。我仍然可以找到我原來問題的答案。再次感謝你。 – clsturgeon 2009-09-13 12:47:32