将驱动器号转换为CD刻录机的完整路径

时间:2010-09-20 20:27:34

标签: 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驱动器的根目录时,如何始终获得完整路径?

1 个答案:

答案 0 :(得分:0)

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