我想从GUI应用程序中提取文本内容,这里有两个示例:
示例1:
假设我打开firefox,输入url : www.google.com
如何使用自己的应用程序从火狐中提取字符串"www.google.com“?
示例2:
打开计算器(使用gcalctool工具),然后输入1+1
如何从自己的程序中提取计算器的字符串"1+1“?
简而言之,我想知道是否有一种方法可以从GUI应用程序的任何小部件中提取文本内容
谢谢
发布于 2011-05-17 13:14:17
我不认为有一种通用的方法来做到这一点,至少不是一个非常优雅的方法。
一些不雅的想法:
您可以修改X window system甚至是一些工具包框架,以提取在特定窗口元素中显示为文本的内容。
您可以截图并使用OCR库将像素转换回感兴趣区域的文本。
您可以重新编译感兴趣的应用程序,以添加某种向它们提问的机制。
您可以使用类似于xtest的方法来注入事件,突出显示感兴趣的区域并将其复制到剪贴板。
发布于 2011-05-17 13:03:57
我相信firefox和gcalctool只是一个例子,你只是想大致知道如何将一个应用程序的输出传递给其他应用程序。
在Linux上有很多方法可以做到这一点,比如:
管道
application1 | application2顺便说一句,如果你想在Ubuntu上用网址启动火狐,这里是Firefox command line manual。例如:
firefox "$url"其中,$url是其值可以为www.mozilla.org的变量
发布于 2011-05-17 21:55:32
这听起来很难。假设您正在运行X11,您可以很容易地抓取窗口图片(参见"man xwd");但是,除非文本被选中并因此被复制到剪贴板,否则没有简单的方法可以访问文本。
或者,如果您只想捕获用户输入,通过激活X11记录扩展也很容易做到:将以下内容放入/etc/X11/xorg.conf:
Section "Module"
Load "record"
#Load other modules you need ...
EndSection尽管它可能也很难使用,但请参阅example code for Xorg/X11 record extension fails
https://stackoverflow.com/questions/6026222
复制相似问题