使用Windows/shell api(atl be ok(,给定文件夹的PIDL,检查该文件夹中是否存在文件的最快方法是什么?
不确定这是否是最快的方法,但它相当简单:
使用SHGetDesktopFolder()
和IShellFolder::BindToObject()
或仅SHBindToObject()
或其他相关功能将PIDL
转换为IShellFolder
(如果您还没有(。然后调用文件夹的IShellFolder::ParseDisplayName()
(如果需要,还可以调用IShellFolder::GetAttributesOf()
(以获取子文件名。 如果发生错误,则该文件不存在。
或者,使用SHCreateItemFromIDList()
将PIDL
转换为IShellItem
(如果还没有(,然后使用SHCreateItemFromRelativeName()
(如果需要,还可以使用IShellItem::GetAttributes(SFGAO_VALIDATE)
(作为子文件名。 同样,如果发生错误(或属性未验证(,则文件不存在。