在下面的代码示例中...其中filePath是:E:\[D]\My Collection
(由picasa归档媒体时生成的文件夹)在XP(32位)上运行正常。我最近在vista 64位上运行了这个...并且ParseDisplayName错误“值不在预期范围内”。所有其他文件夹(没有'[D]')工作正常。任何帮助将不胜感激。
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 :(得分:0)
当您从公共文件对话框(或任何类型的“打开”对话框)中选择文件夹时,会发生这种情况(无论代码包如何;您可以通过直接使用shell API并获取解析名称来重新调用它)左侧树视图。
例如 - 使用你提到的例子 - Code pack的样本。运行示例,选择浏览,从CFD中,从左侧树视图中选择您的文件夹。如果你进入文件夹然后点击“打开”,你也会遇到同样的问题。您获得的解析名称是:
c:\folder\folder
(注意重复文件夹)。
这是Vista中的一个已知问题...我担心它没有补丁(或者至少我知道 - 除非你切换到Win7 :-))