在可移动设备/可移动存储上使用FolderBrowserDialog

4
我正在开发一个简单的复制工具,可以从数码相机中复制文件。我已经编写了文件复制代码,并且所有内容都连接得很好。
问题似乎出现在“FolderBrowserDialog”上。在Vista中(我还没有检查XP),我可以浏览到相机上的目录。但是,“FolderBrowserDialog”不允许我选择相机上的目录。“OK”按钮是灰色的。
查看相机上文件的路径,它看起来像这样:
Computer\[Camera Name]\Removable storage\AnotherDirectory\

由于这不是一个有效的路径(而不是C:\ whatever),我猜测FolderBrowserDialog不喜欢这个。

如果从有效路径名称中运行,则可以正常工作,但无法从相机上运行...

有人有什么建议来解决这个问题吗?

更新

为了确认oefe的问题,该路径实际上显示为:

Computer\[Camera Name]\Removable storage\AnotherDirectory\

ChulioMartinez提出使用SHBrowseForFolder的建议是可行的,我将标记为正确答案。感谢您的帮助,Chulio。


你如何获取实际路径?SHBrowseForFolder返回一个有效的PIDL,但SHGetPathFromIDList无法返回路径。它适用于非MTP路径,但不适用于MTP路径。 - Regis St-Gelais
3个回答

3
我的猜测是,该位置没有文件系统表示(路径),例如c:...\我的相机。
您应该能够获取文件夹的PIDL(它应该是函数的标志之一),并使用COM shell接口实现复制。 SHBrowseForFolder 使用PIDL枚举文件夹

0

有没有一种方法可以将相机路径映射到驱动器号?(我在想像命令提示符中的“subst”或“net use”之类的东西。)也许这样可以欺骗FolderBrowserDialog以按预期方式运行?


0
你从哪里获取路径的?是从资源管理器的地址栏中吗?这并不显示文件系统路径,而是一个“用户友好”的表示方式。
要获取路径,请右键单击地址栏,然后选择“复制地址为文本”或“编辑地址”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接