C# 获取当前屏幕上指定文本的坐标

C# 获取当前屏幕上指定文本的坐标,c#,windows,winapi,hook,automated-tests,C#,Windows,Winapi,Hook,Automated Tests,全部。 我想写一个GUI自动化工具,它可以在当前屏幕上定位文本标签(绝对位置),这样我就可以驱动鼠标光标点击它。 所需函数的签名如下: 点GetTextCoordination(字符串文本) 有人知道如何实现这一点吗?我不想使用OCR或计算机视觉技术来解决性能问题。挂接TextOut win32api函数是否可行 我不认为挂接TextOut函数是一个可行的解决方案(尽管这当然是可能的)。您无法保证要查找的文本是使用此函数绘制的。尝试使用OCR也同样充满了困难 我怀疑,出于您的目的,枚举目标应用程

全部。
我想写一个GUI自动化工具,它可以在当前屏幕上定位文本标签(绝对位置),这样我就可以驱动鼠标光标点击它。
所需函数的签名如下:

点GetTextCoordination(字符串文本)


有人知道如何实现这一点吗?我不想使用OCR或计算机视觉技术来解决性能问题。挂接TextOut win32api函数是否可行

我不认为挂接TextOut函数是一个可行的解决方案(尽管这当然是可能的)。您无法保证要查找的文本是使用此函数绘制的。尝试使用OCR也同样充满了困难


我怀疑,出于您的目的,枚举目标应用程序的窗口(使用GetWindow和相关函数)并检查每个窗口的文本(使用GetWindowText)就足够了。这将为您提供一个窗口句柄,您可以从中获取窗口边界或直接向其发送消息。

您希望使用GUI自动化工具包,例如UIAutomation库或white库(它是UIAutomation的包装器)或AutoIT


(或者,也可以使用商业工具来实现这一点——如果您正在考虑建立一个测试自动化程序,那么最好使用其中一个商业工具,因为它们具有许多使这类事情更简单的功能。)

当在屏幕上多次发现文本时,它的行为应该是什么?我想我会提供一个参数,指示显示顺序的索引。谢谢,但是屏幕上的一些文本不能被spy++提取,所以我认为它们不能通过GetWindowText函数获取。很多文本不能通过UIAutomation的UI Spy获取,所以UIAutomation不会有帮助。类似地,ms spy++和QTP的Object spy无法识别屏幕上的大部分文本。