【问题标题】:Translate drive letter to full path for CD burner将驱动器号转换为 CD 刻录机的完整路径
【发布时间】:2010-09-20 20:27:33
【问题描述】:

在以下代码中,我试图从用户那里获取文件夹位置。但是,当我在文件夹浏览器中选择 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 驱动器的根目录时,如何始终获得完整路径?

【问题讨论】:

    标签: c++ c windows winapi


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-08
      • 2018-06-27
      • 2018-10-15
      • 2017-03-16
      • 2013-06-29
      • 2014-10-29
      • 2012-04-01
      相关资源
      最近更新 更多