如何在消费端获取Windows Shell对象的信息/工具提示文本?
获取Windows Shell项的工具提示文本
Windows Shell虽说个年头有点久的API,但架不住它健壮稳定啊!乍一看好像要拿到指定Shell项的信息或者工具提示文本挺容易的——就像你在Windows资源管理器里看到的那些悬浮提示那样。不过实际折腾下来才发现,这里面还是有点门道的,我试过不少方法,最后觉得最靠谱的方式就是调用IShellFolder.GetUIObjectOf接口。
简化后的核心逻辑(伪代码)
// 通过父Shell项,获取指定单个子pidl的IQueryInfo对象 iQueryInfo = parent.GetUIObjectOf(..., IID_IQueryInfo, ...); // 调用GetInfoTip方法提取工具提示文本 tipText = iQueryInfo.GetInfoTip(...);
几个要注意的点
- 得先拿到目标Shell项对应的父Shell文件夹对象,还有该项的子PIDL(Item ID List),这是调用
GetUIObjectOf的基础条件 - 请求接口的时候一定要指定
IID_IQueryInfo,只有拿到这个接口实例,才能顺利提取提示文本 - 最后调用
IQueryInfo.GetInfoTip就能直接获取到系统原生的工具提示内容,比自己手动拼接信息要精准得多,毕竟是系统自己生成的~
说句题外话,这个方法虽然步骤看起来有点绕,但胜在适配性极强,不管是普通文件、文件夹,还是系统特殊项(比如回收站、控制面板)都能完美获取到对应的提示文本。
内容的提问来源于stack exchange,提问作者Tomcat
相关产品推荐
相关产品推荐

