我怎样才能尽可能地从OSX上最前面的窗口/文档中获取所有文本?

时间:2016-07-30 09:11:34

标签: swift macos applescript osascript

我希望能够从屏幕最前面的窗口中获取所有文本,将其传输到网址解析器并从解析后的文本中选择要打开的网址。

要做到这一点,我需要一种方法来访问最前面窗口的所有文本内容。我已经接近使用applescript,但我找不到获取实际文本的方法。我怀疑swift可能会提供帮助,但是我很遗憾甚至谷歌这个,因为我的大多数搜索最终只能找到一些简单的方法,比如从Chrome等标签中获取url等。

这是我想要的要点:

tell the frontmost application
    get contents of frontmost window as text
end tell

2 个答案:

答案 0 :(得分:1)

您是否尝试获取特定应用程序的所有UI元素?

PropertyChanged

答案 1 :(得分:0)

JXA的解决方案:

//Example get all text from "ScreenFlow"
var sProc  = "ScreenFlow"
var system = Application('System Events')
var elements = system.processes[sProc].windows[0].entireContents()
var s = ""
for (var i=0;i<elements.length;i++){
    s = s + elements[i].name() + ","
}
s = s.replace(/null,/g,"")

//Return s
console.log(s)

您可以添加其他元素子项,以使此列表更加密集。我视频编辑器的示例输出:

"Video,+ Action,Color:,Offset:,Blur Size,Shadow,Opacity,Scale:,Z Rotation:,Reflection,Y Rotation:,Opacity:,Cropping,X Rotation:,Position:,Color Controls,Corner Round:,Video Filters,Duration: 1 min 0 secs,UI Mass Email App,UI Mass Email App,"

注意这不会抓取菜单文本。为此,您必须循环遍历system.processes[sProc].menuBars