【问题标题】:How to create a property store binary file如何创建属性存储二进制文件
【发布时间】:2019-11-05 04:45:05
【问题描述】:

我正在尝试在 Windows 文件资源管理器中实现一个基于图标的属性,我从 this 帖子中的理解是它需要从属性处理程序返回一个 属性存储二进制文件。有谁知道如何创建属性存储二进制文件?搜索后,我在规范中遇到了一些documentation,但我没有看到任何有关如何创建的示例。非常感谢。

【问题讨论】:

  • 在 SHGetPropertyStoreFromIDList 上设置断点,看看它做了什么。

标签: c++ winapi binary windows-shell propertyhandler


【解决方案1】:

您不需要任何二进制文件,您只需要一个IPropertyStore 的实现。您可以使用PSCreateMemoryPropertyStore 方法创建一个。

IPropertyStore *ps;
if (SUCCEEDED(PSCreateMemoryPropertyStore(IID_PPV_ARGS(&ps))))
{
    // do your work
    ps->Release();
}

【讨论】:

  • 谢谢。您能否详细说明我将如何将其与有关属性图标的链接帖子结合使用? stackoverflow.com/questions/47803994/… 再次感谢。
  • @amt528 - 这是一个不同的问题。无论如何,丹尼斯的回答或多或少地解释了一切。此页面还从高级 C# 视图对其进行了解释,但它应该可以帮助您连接点:shellboost.com/Doc/Developer-s-Guide/…(在“项目图标属性”一章中)。免责声明:这是我公司销售的商业产品
  • 我不确定我是否理解。我在我的属性处理程序中实现IPropertyStore,包括GetValue() 方法。所以按照我的理解,当 shell 要求获取与图标相关的属性键的值时,GetValue() 方法应该返回一个属性存储二进制文件。但我不明白该怎么做。任何帮助将不胜感激!
  • 1) 在安装时使用 .propdesc 和适当的权限注册您的两个自定义属性(1 个 blob + 1 个枚举),以及 2) 您的 IPropertyStore 必须为 blob 属性提供一个值(“IconUIProperty”在我的文档链接中),它本身就是一个具有 3 个属性的 IPropertyStore 实现(我的文档链接中的 MemoryPropertyStore,它可以使用 PSCreateMemoryPropertyStore)。 (我的文档链接中的“StatusIcons”、“StatusIconsDisplayFlag”和“IconProperty”)。仔细阅读我们提供的链接,一切都在那里(我相信只有那里......因为这没有正式记录)
  • @amt528 - 从 Windows Vista 开始提供属性存储,但我不知道博客 + 枚举属性。也为 Windows 7 添加了许多东西。试试看吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
相关资源
最近更新 更多