如何将虚拟设备中的所有文件夹和文件名称插入PC? 在C ++中;
我有问题,因为虚拟设备没有像本地光盘这样的字母; 路径开始像这样的“电脑\ SUPRA_M727G \内部存储”
答案 0 :(得分:3)
您必须使用Shell接口,即IShellFolder
和IEnumIDList
。
要获取IShellFolder
文件夹的"Internal storage"
,您可以:
使用SHGetDesktopFolder()
获取Shell命名空间根目录的IShellFolder
,然后将"Computer\SUPRA_M727G\Internal storage"
字符串传递给其IShellFolder::ParseDisplayName()
方法以获得绝对{ {3}}您可以传递给ITEMIDLIST
方法。
使用IShellFolder::BindToObject()
或SHParseDisplayName()
将"Computer\SUPRA_M727G\Internal storage"
字符串转换为绝对ILCreateFromPath()
,您可以将其传递给ITEMIDLIST
psf
参数设置为NULL
。
无论哪种方式,一旦您拥有IShellFolder
存储文件夹,就可以使用其SHBindToObject()
方法获取IEnumIDList
来枚举其文件和子文件夹。枚举将为每个项目提供一个相对ITEMIDLIST
。要将每个项目的名称检索为字符串,请将每个ITEMIDLIST
传递给其IShellFolder::EnumObjects()
方法,然后将返回的IShellFolder::GetDisplayNameOf()
传递给其中一个StrRetTo...()
函数({{3} },STRRET
或StrRetToBSTR()
)。
有关详细信息,请参阅MSDN: