附加到shell扩展中的默认工具提示

时间:2016-09-08 18:41:56

标签: c# .net visual-c++ explorer shell-extensions

我使用SharpShell构建了一个shell扩展。我想知道是否可以附加到鼠标悬停在文件上时看到的工具提示:

enter image description here

我已阅读并尝试使用Shell Info Tip Handler,但问题在于它会将您设置的内容覆盖整个工具提示,而不是让您能够将一行文本附加到你通常会看到的默认工具提示,这是我想要的结果。

我觉得SharpShell可能不支持这一点,因此,我可以从人们那里获得有关如何在MSVC ++ shell扩展中另外解决此问题的见解。

1 个答案:

答案 0 :(得分:1)

这是可能的,但不是通过shell工具提示扩展。相反,通过 shell属性处理程序。配方属性处理程序已记录在案here,可以从this repository完整下载。这是Windows 10中的一张图片:

enter image description here

它本质上为PerfectSteaks.recipe文件添加了额外的文件属性,方法是将自身注册为属性处理程序,例如Recipe difficulty的属性,其关键是Microsoft.SampleRecipe.Difficulty,并且可以很容易通过修改Explorer密钥HKCRHKEY_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>

这些日子并不是独一无二的,因为很多文件格式确实为存储提供了某种形式的额外内部API。如果您正在使用Office文件(我是),您可能会注意到它们在其中公开了存储属性,以便使用OLE进行持久化。 DSOFile.dllclick here to download the source)对Office文件以及其他文件也非常感兴趣。您将看到它在Office文件格式本身中尝试OLE存储,除非它尝试Microsoft Office Metadata Handler存储。如果失败了,它最终会尝试使用备用流(不是自己的替代流的粉丝,因为它们不会持续存在)。

所以说,通过结合使用shell属性处理程序和类似于DSOFile.dll的策略,您可以合并一个解决方案,以便以正确的方式完成这项工作。