Ale*_*dru 6 .net c# explorer shell-extensions visual-c++
我有一个使用SharpShell构建的shell扩展.我想知道是否可以附加到鼠标悬停在文件上时看到的工具提示:
我已阅读并尝试使用Shell Info Tip Handler,但问题在于它会将您设置的内容覆盖整个工具提示,而不是让您能够将一行文本附加到您通常的默认工具提示会看到,这是我想要的结果.
我有一种感觉,SharpShell可能不支持这一点,因此,我可以从人们那里获得有关如何在MSVC++ shell扩展中另外解决此问题的见解.
这是可能的,但不能通过 shell 工具提示扩展。相反,通过shell 属性处理程序。配方属性处理程序记录在此处,并且可以从此存储库中完整下载。这是它在 Windows 10 中运行的图片:
它本质上是PerfectSteaks.recipe通过将自身注册为属性处理程序来向文件添加额外的文件属性,例如Recipe difficulty谁的密钥的属性Microsoft.SampleRecipe.Difficulty,并且可以Explorer通过修改HKCR密钥HKEY_CLASSES_ROOT\SystemFileAssociations\.recipe以将InfoTip(类型REG_SZ)设置为prop:System.ItemType;System.Author;System.Rating;Microsoft.SampleRecipe.Difficulty使其显示,从而轻松地将其设置为显示。
属性存储在文件本身内。该.recipe文件是一个 XML 文件,其中包含处理程序检索的实际难度等内容:
<RecipeInfo>
<Difficulty>Hard</Difficulty>
<PreparationTime>5</PreparationTime>
<CookTime>20</CookTime>
<Yield>2 servings</Yield>
</RecipeInfo>
Run Code Online (Sandbox Code Playgroud)
如今,这并不是什么独特的事情,因为许多文件格式确实提供了某种形式的额外内部 API 进行存储。如果您正在使用 Office 文件(我就是这样),您可能会注意到它们公开了用于在其中存储的属性,以便使用 OLE 进行持久化。DSOFile.dll(单击此处下载源代码)对于 Office 文件以及一般其他文件最感兴趣。您将看到它尝试在 Office 文件格式本身内进行 OLE 存储,除非它尝试进行Microsoft Office Metadata Handler存储。如果失败,它最终会尝试使用备用流(我本人不喜欢备用流,因为它们不会持续存在)。
话虽这么说,通过结合 shell 属性处理程序和与 DSOFile.dll 类似的策略,您可以合并一个解决方案,以正确的方式完成这项工作。
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |