单击开始菜单中的“我的电脑”将返回GUID链接而不是直接链接。例如:如何使用Qt/C++将GUI转换为Windows上的路径?
::{20B04FE1-3AEA-1069-A2D8-08012B30309D}
我怎样才能将其转换为正常路径,这样我可以得到目录和文件的列表与QDir
的帮助?
UPDATE
我没有试图让驱动器的列表。这很容易与Qt完成。我只想知道用户在开始菜单中点击了我的电脑。 (我的应用程序可以替换Windows资源管理器)
单击开始菜单中的“我的电脑”将返回GUID链接而不是直接链接。例如:如何使用Qt/C++将GUI转换为Windows上的路径?
::{20B04FE1-3AEA-1069-A2D8-08012B30309D}
我怎样才能将其转换为正常路径,这样我可以得到目录和文件的列表与QDir
的帮助?
UPDATE
我没有试图让驱动器的列表。这很容易与Qt完成。我只想知道用户在开始菜单中点击了我的电脑。 (我的应用程序可以替换Windows资源管理器)
您正在寻找Shell命名空间中的一个项目,而不是在文件系统中。
介绍Shell空间:
http://msdn.microsoft.com/en-us/library/windows/desktop/cc144090(v=vs.85).aspx
外壳显示了不存在的文件很多事情,我的电脑是一个。桌面是另一个 - 外壳桌面是所有用户桌面文件夹,个人桌面文件夹和其他一些像回收站一样虚拟的其他项目的合并视图。
要了解有关该项目的更多信息,您可以使用SHParseDisplayName
将名称转换为ITEMIDLIST
。
如果您打算提供Explorer的替代品,祝您好运!
通常,用['CSIDL_DRIVES']调用['SHGetFolderPath'](http://msdn.microsoft.com/zh-cn/library/windows/desktop/bb762181%28v=vs.85%29.aspx) ](http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx)作为这种事情的第二个参数,但我不认为'CSIDL_DRIVES'具有物理路径表示。你想达到什么目的? – ildjarn
@ildjarn,我已更新问题 – Alex
查找'SHITEMID' – Ben