我使用SharpShell构建了一个shell扩展。我想知道是否可以附加到鼠标悬停在文件上时看到的工具提示:
我已阅读并尝试使用Shell Info Tip Handler,但问题在于它会将您设置的内容覆盖整个工具提示,而不是让您能够将一行文本附加到你通常会看到的默认工具提示,这是我想要的结果。
我觉得SharpShell可能不支持这一点,因此,我可以从人们那里获得有关如何在MSVC ++ shell扩展中另外解决此问题的见解。
答案 0 :(得分:1)
这是可能的,但不是通过shell工具提示扩展。相反,通过 shell属性处理程序。配方属性处理程序已记录在案here,可以从this repository完整下载。这是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>
这些日子并不是独一无二的,因为很多文件格式确实为存储提供了某种形式的额外内部API。如果您正在使用Office文件(我是),您可能会注意到它们在其中公开了存储属性,以便使用OLE进行持久化。 DSOFile.dll
(click here to download the source)对Office文件以及其他文件也非常感兴趣。您将看到它在Office文件格式本身中尝试OLE存储,除非它尝试Microsoft Office Metadata Handler
存储。如果失败了,它最终会尝试使用备用流(不是自己的替代流的粉丝,因为它们不会持续存在)。
所以说,通过结合使用shell属性处理程序和类似于DSOFile.dll的策略,您可以合并一个解决方案,以便以正确的方式完成这项工作。