如何获取鼠标下的文本

如何获取鼠标下的文本

作者:BlogUpdater |  时间:2021-02-14 |  浏览:1133 |  评论已关闭 条评论

什么是MSAA
Microsoft Active Accessibility是基于组件对象模型(COM)的技术,它改进了辅助功能与在Microsoft Windows上运行的应用程序一起工作的方式。它提供了集成到操作系统中的动态链接库,以及COM接口和API元素,而且提供了用于公开有关UI元素的信息的可靠方法。

从上面的定义,我们得知:MSAA是一种将有关屏幕上对象的信息公开给辅助功能(如屏幕阅读器)的技术。但这并不意味着只有屏幕阅读器才能使用它。

下面是一个例子程序,它在最基本的级别上说明了Active Accessibility的用法:阅读文本。 Active Accessibility的功能不仅限于此。你还可以以编程方式浏览屏幕上的对象,读取各种属性,甚至调用它们上的命令。

我们先看看下面的代码:

当然,最有意思的部分是RecalcText这个函数,它会获取当前鼠标位置下的文本:

让我们来看看上面代码的功能。我们从获取光标位置开始,代码会判断自上次检查以来它是否发生了变化。如果确实发生了变化,则我们要求AccessibleObjectFromPoint在这些坐标处标识对象,并为我们提供IAccessible指针和一个子标识符。这两条信息共同表示光标下的对象。

现在,只需简单地查询对象的名称(get_accName)和值(get_accValue)并对其进行格式化即可。

另外,请注意,我们根据Eric的Complete Guide to BSTR Semantics对BSTR为NULL的情况进行了处理。

总结
这项技术,确实能做到普通Win32 API做不到的事情,你真棒!

最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《How to retrieve text under the cursor (mouse pointer)》

标签:

评论已关闭。