c++ - 将驱动器盘符转换为 CD 刻录机的完整路径

标签 c++ c windows winapi

在下面的代码中,我尝试从用户那里获取文件夹位置。但是,当我在文件夹浏览器中选择 E:\时,szAbsolutePath 没有提供 CD 刻录机临时文件夹的路径。这会阻止我保存到该位置。但是,如果我选择 E:\folder1\之类的内容,我将获得完整路径并可以将文件写入此位置。

char szDisplayName[MAX_PATH];
BROWSEINFO binfo;
memset(&binfo, 0, sizeof(BROWSEINFO));
binfo.lpszTitle = strTitle.c_str();
binfo.hwndOwner = hwndOwner;
binfo.pszDisplayName = szDisplayName;
binfo.ulFlags = BIF_USENEWUI | BIF_NEWDIALOGSTYLE | BIF_BROWSEFILEJUNCTIONS | BIF_RETURNONLYFSDIRS;
PIDLIST_ABSOLUTE pidl = SHBrowseForFolder(&binfo);
if(pidl) {
  char szAbsolutePath[MAX_PATH];
  SHGetPathFromIDList(pidl, szAbsolutePath);
}

当用户选择CD-R驱动器的根目录时,如何才能始终获得完整路径?

最佳答案

您可以使用ICDBurn::GetRecorderDriveLetter函数来获取刻录机的驱动器号 - 然后与从GetSaveFileName()返回的字符串进行比较就很简单了。如果您确实找回了 CD 刻录机上的路径,则可以使用 SHGetFolderLocationCSIDL_CDBURN_AREA 来获取暂存区域的路径 - 那么只需更换驱动器即可路径字符串开头的字母与暂存区域的路径。

关于c++ - 将驱动器盘符转换为 CD 刻录机的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3755204/

相关文章:

c++ - 在不存在的目录中创建文件的最佳方法

c++ - 文件或目录 _findfirst C++

python - 是否可以使用 libclang python 解析没有 header 的 cpp 文件中的函数原型(prototype)

c - 评估和截断

c# - Python 的 struct.pack(fmt, v1, v2, ...) 在 C# .NET 中的等效项是什么?

c - 如何使用C计算目录中的文件

c++ - 为什么将 ReadProcessMemory() 与当前进程的句柄一起使用?

c++ - boost::is_member_function_pointer_of?

C++目录搜索

c++ - 预加载音频缓冲区 - 什么是合理可靠的?