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

Cla*_*diu 3 macos bash shell user-interface operating-system

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

如何在 Mac OS X 上完成此操作?它不一定必须是Python 语言,也不一定是跨平台的。最好它不需要任何额外的下载就可以运行(例如仅使用包含的命令的 applescript 文件或 bash 文件),但这不是必需的。

小智 8

也许“无需额外下载”的最简单方法是使用 AppleScript:

tell application "System Events"
    get name of every window of every process
end tell
Run Code Online (Sandbox Code Playgroud)

由于 Applescript 语法相当迟钝,因此等效的 Javascript 是:

var SE = new Application("System Events");
SE.processes.windows.name()
Run Code Online (Sandbox Code Playgroud)

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

[[], [], ["Stack Overflow"], ["iTunes", "MiniPlayer"], ...]
Run Code Online (Sandbox Code Playgroud)

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

(请注意,此 Javascript 必须在脚本编辑器中运行,而不是在 Web 浏览器中运行。脚本桥的组件(包括系统事件)在 Web 浏览器中不可用。)