【问题标题】:How can I delete an object flagged as SFGAO_STREAM?如何删除标记为 SFGAO_STREAM 的对象?
【发布时间】:2011-10-10 10:06:03
【问题描述】:

我有一个可以通过 pidl 通过IShellFolder 访问的文件。此文件具有标志SFGAO_CANDELETE,其父文件夹仅具有标志SFGAO_STORAGEANCESTOR。

如何删除文件?

条件:

  1. 文件和文件夹位于 USB 设备(数码相机和手机)上。
  2. 一个解决方案至少应该在 WinXP 上运行(Win2000 支持会很棒)
  3. 不使用 WPD。

我尝试在 pidl 上调用 SHFileOperation,但它需要文件系统路径,而不是我拥有的 GUID 样式路径。 I asked about this on Experts Exchange,在那里我了解了 IFileOperation,但这需要 Windows Vista。

示例:

父文件夹:: 媒体:: {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 要删除的文件: 一些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} \ {0000001B-0000000000000000} \ {0000001B-0000000000000000} \ {000000000000} \ {0000001C-0000000000000000} \ {0000001C-0000000000000000-00000000000000 -00000000000000} \ {0000001C-0000000000000000 -00000000000000} \ {0000001C-000000000000000000 -00000000000000 -00000000000000 -00000000000000} SFGAO_CANCOPY SFGAO_CANMOVE SFGAO_CANRENAME SFGAO_CANDELETE SFGAO_HASPROPSHEET SFGAO_DROPTARGET SFGAO_STREAM

【问题讨论】:

  • 欢迎来到 Stack Overflow。我已经编辑了这个问题,以添加您在专家交流中提出此问题时从中学到的一些内容。我还删除了关于获取大小和时间戳的第二个问题;它与如何删除文件无关。请在一个单独的问题中询问该问题,并让这个问题仅关注删除。这样你就可以更好地回答这两个问题。

标签: c++ delphi windows-shell


【解决方案1】:

上个月在 C++Builder 期刊论坛上看到the answer I posted 对这个非常相同的问题(来自你?)。简而言之,我可以在任何地方找到的唯一记录方法是检索父文件夹的 IContextMenu 接口,然后在所需文件上调用 delete 动词。

【讨论】:

  • 这也是我发现的。构建自定义数据对象并将其传递给 IFileOperation 似乎确实有效。 “删除”动词似乎有魔力。
【解决方案2】:

使用 IContextMenu 完全是个坏主意,尽管它可以工作。

类似的,当你想喝杯咖啡时,你应该打电话给一个走进你家的男人为你做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2017-11-17
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多