【问题标题】:Get file/folder attributes from IShellFolder using DWORD attribute使用 DWORD 属性从 IShellFolder 获取文件/文件夹属性
【发布时间】:2012-03-15 13:08:26
【问题描述】:

我对 C++ 非常陌生,尤其是 MS C++(对于 Windows 的东西)

我想在文件夹上显示覆盖图标。

由于网上的例子很少,我对此感到有些成功。

我正在尝试获取和操作文件/文件夹属性,以便我可以创建一个标准来显示覆盖图标。

我很难理解 DWORD 的东西,我如何从中检索有关文件/文件夹的信息(如果有的话),我说的是 IShellIconOverlayIdentifier::IsMemberOf 方法。

    HRESULT IsMemberOf(
  [in]  PCWSTR pwszPath,
  DWORD dwAttrib
);

我怎么知道它是文件夹还是可写或不可写...(来自 dwAttrib)。

它说(IsMemberOf 文档中的 dwAttr)

对象的属性

DWORD 真的包含文件/文件夹的所有属性吗?

如果我必须从IShellFolder::GetAttributesOf 方法中获取它,那么我该如何实现。

我不再倾向于 java,所以我希望我只需要做这个覆盖的东西。 谢谢

【问题讨论】:

    标签: c++ visual-studio-2010 winapi attributes dword


    【解决方案1】:

    IShellIconOverlayIdentifier 由 shell 扩展实现,您通常不直接使用此接口,shell 在其命名空间/IShellFolder 实现的深处调用它。

    如果你有一个 IShellFolder 接口和一个子 pidl,你可以这样称呼它:

    SFGAOF icareabout = SFGAO_COMPRESSED|SFGAO_ENCRYPTED;
    hr = pShellFolder->GetAttributesOf(1,&childpidl,&icareabout);
    //Check hr
    if (SFGAO_COMPRESSED&icareabout) ...
    

    如果您只有绝对 pidl,请先调用 SHBindToParent

    如果你只有一个常规路径,调用SHParseDisplayName,它可以给你标志(记得释放pidl)同样的事情可以通过使用SHGFI_ATTRIBUTES调用SHGetFileInfo来实现。

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 2014-12-07
      • 1970-01-01
      • 2013-05-07
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多