如何获取鼠标下的文本
什么是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)》
- 下一篇: 快报:Visual Studio改进了对OpenMP的支持
- 上一篇: 为什么不能休眠单个进程
相关推荐
- 介绍下COM接口相关的宏
- Posted on 11月12日
- 如何判断我安装了一个64位的Windows?
- Posted on 07月20日
- 即将开始:2020的一场比较纯粹的VC++研讨会
- Posted on 04月20日
- C:WINDOWSCSC这个目录是干啥的?
- Posted on 01月16日
评论已关闭。