C++ 如何删除标记为SFU流的对象?
C++ 如何删除标记为SFU流的对象?,c++,delphi,windows-shell,C++,Delphi,Windows Shell,我有一个可以通过pidl通过IShellFolder访问的文件。此文件具有标志SFGAO\u CANDELETE,其父文件夹仅具有标志SFGAO\u storageconsensort
如何删除该文件
条件:
文件和文件夹位于USB设备(数码相机和手机)上
一个解决方案至少应该在WinXP上运行(Win2000支持将非常好)
没有使用WPD
我尝试调用pidl,但它需要一个文件系统路径,而不是GUID样式的路径,我从中了解到,但这需要Windows Vista
样本:
parent folder
我有一个可以通过pidl通过IShellFolder
访问的文件。此文件具有标志SFGAO\u CANDELETE
,其父文件夹仅具有标志SFGAO\u storageconsensort
如何删除该文件
条件:
文件和文件夹位于USB设备(数码相机和手机)上
一个解决方案至少应该在WinXP上运行(Win2000支持将非常好)
没有使用WPD
我尝试调用pidl,但它需要一个文件系统路径,而不是GUID样式的路径,我从中了解到,但这需要Windows Vista
样本:
parent folder::
media ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_04e8&pid_6860&ms_comp_mtp&samsung_android#7&69f3c26&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,SECZ9519043CHOHB,12351995904}\{0000000C-0000-0000-0000-000000000000}
SFGAO_CANCOPY
SFGAO_CANMOVE
SFGAO_CANRENAME
SFGAO_CANDELETE
SFGAO_HASPROPSHEET
SFGAO_DROPTARGET
SFGAO_STORAGEANCESTOR
SFGAO_FOLDER
SFGAO_HASSUBFOLDER
SFGAO_CONTENTSMASK
file to delete:
some breathing.mp3 ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_04e8&pid_6860&ms_comp_mtp&samsung_android#7&69f3c26&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,SECZ9519043CHOHB,12351995904}\{0000000C-0000-0000-0000-000000000000}\{0000001B-0000-0000-0000-000000000000}\{0000001C-0000-0000-0000-000000000000}\{00000021-0000-0000-0000-000000000000}
SFGAO_CANCOPY
SFGAO_CANMOVE
SFGAO_CANRENAME
SFGAO_CANDELETE
SFGAO_HASPROPSHEET
SFGAO_DROPTARGET
SFGAO_STREAM
父文件夹::
媒体:{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\\\\\ \usb\vid\U 04e8&pid\U 6860&ms\U comp\U mtp&samsung\U android\7&69f3c26&0&0000\6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,SECZ9519043HB,12351995904亿C-0000-000000000000
SFGAO_CANCOPY
斯福加乌坎莫夫酒店
SFGAO_CANRENAME
斯夫加乌坎德莱特酒店
SFGAO_HASPROPSHEET
SFGAO_DROPTARGET
SFGAO_
SFU文件夹
SFGAO_HASSUBFOLDER
SFGAO_内容掩码
要删除的文件:
一些呼吸。mp3:::{20 0 0 0 4 4 FE0-0 0-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7878-6-5-5-5-85-F98F98F414141414 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5-5-5-85-85-85-85-85-85-85-85-85-85-85-000000000000}\{00000021-0000-0000-0000-000000000000}
SFGAO_CANCOPY
斯福加乌坎莫夫酒店
SFGAO_CANRENAME
斯夫加乌坎德莱特酒店
SFGAO_HASPROPSHEET
SFGAO_DROPTARGET
斯法加乌河
看看这个(你?)同样的问题简而言之,我在任何地方都能找到的唯一有文档记录的方法是检索父文件夹的IContextMenu
界面,然后调用所需文件上的delete
动词。使用IContextMenu完全是个坏主意,尽管它可以工作
类似的情况是,当你想喝一杯咖啡时,你应该给家里来的人打电话,为你做这件事。欢迎来到Stack Overflow。我编辑了这个问题,添加了你在专家交流上问这个问题时学到的一些东西。我还删除了你关于获取大小和时间戳的第二个问题;这没有什么可讨论的如何删除该文件。请在单独的问题中询问该问题,并让这一问题只关注删除。这样,您将对这两个问题获得更好的答案。这也是我发现的。构建自定义数据对象并将其传递给IFileOperation似乎确实可行。似乎“删除”动词中有魔力。