【问题标题】:How can I convert an absolute system path to an IShellFolder?如何将绝对系统路径转换为 ​​IShellFolder?
【发布时间】:2014-04-28 04:32:50
【问题描述】:

首先我会说我使用 COM 的经验绝对为零,更不用说通过 PHP 的 COM extension 使用它们了。

作为更大项目的一部分,我需要获取代表给定绝对系统路径的IShellFolder。我已经做了很多谷歌搜索,我遇到的大多数解决方案都涉及使用SHGetDesktopFolder,但是语法差异的组合(因为我看到的所有示例都是使用某种 .NET 语言或其他语言)和事实Desktop 可能不是是我正在寻找的路径的祖先,这让我感到困惑。

如果它与答案相关,我的最终目标是使用IShellFolder 检索IExtractImage 中给定文件的IShellFolder 并在运行脚本的服务器上显示图像.

【问题讨论】:

  • 虽然听起来很奇怪,但桌面确实是所有shell文件夹的根路径。另外,请注意在服务器上调用 Shell API。它并不总是受支持。

标签: php .net windows com


【解决方案1】:

我不知道 PHP 中是否有特殊功能,但在 C 或 C++ 中,Raymond Chen 建议使用SHParseDisplayName 将绝对路径转换为PIDL,然后使用SHBindToParent 给你两个@ 987654327@指针和文件夹内文件的PCUITEMID_CHILD

His example function GetUIObjectOfFile 加倍努力并绑定到对象本身,尽管这可能不是您想要的)

但是,由于它使您在处理其余部分之外还需要处理 PIDL,因此它可能比 SHGetDesktopFolder 方法更糟糕。

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2011-11-07
    • 2011-05-02
    相关资源
    最近更新 更多