如何在OS X中列出正在运行的程序的所有窗口标题?

时间:2015-02-26 04:45:30

标签: macos bash shell user-interface operating-system

我知道如何在Windows中列出所有窗口标题,例如使用Python via the Win32 API。或者最终我可以直接用C / C ++编写它。

如何为Mac OS X实现此目的?它不一定必须在Python中,并且它不必是跨平台的。优选地,它可以在不需要任何额外下载的情况下运行(例如仅使用包含的命令的Applecript文件或bash文件),但这不是必需的。

1 个答案:

答案 0 :(得分:2)

这可能是最简单的方法,而且没有额外的下载"是使用AppleScript:

tell application "System Events"
    get name of every window of every process
end tell

由于Applescript语法非常钝,因此等效的Javascript是:

var SE = new Application("System Events");
SE.processes.windows.name()

这将返回以下形式的结构:

[[], [], ["Stack Overflow"], ["iTunes", "MiniPlayer"], ...]

其中每个数组条目代表一个正在运行的应用程序,这些数组中的每个字符串代表一个窗口。空数组表示没有打开窗口的应用程序。

(请注意,此Javascript必须在脚本编辑器中运行,不在Web浏览器中 .Scripting Bridge的组件(包括系统事件)不能从Web浏览器中获得。)