GetOpenFileName 在默认目录 'Computer' 打开可能吗?

GetOpenFileName open at default directory 'Computer' possible?

我正在使用 GetOpenFileName 在 C++ 中打开文件,是否可以使用 lpstrInitialDir 在 "Computer" 虚拟位置设置初始目录?

谢谢, 李.

这对于 GetOpenFileName 是不可能的,因为您希望使用的位置不是文件系统的一部分。相反,它是更广泛的 shell 命名空间的一部分。

如果您查看 GetOpenFileName 的文档,您会发现它已被通用项目对话框所取代(实际上是在 10 多年前)。这些对话框确实允许您将初始文件夹指定为 shell 项。

如果您需要支持比 Vista 更旧的 Windows,其中 IFileDialog 不可用,请尝试指定 Shell 文件夹 GUID。例如,My Computer GUID 是 20D04FE0-3AEA-1069-A2D8-08002B30309D。您可以这样指定它:

ofn.lpstrInitialDir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}";

但是,值得注意的是,由于behavioral changes

,这种方法在Windows 7及以后的版本上几乎注定要失败

因此,您最好在 Vista 及更高版本上使用 IFileDialog