如何在 OS X 中列出 运行 个程序的所有 window 个标题?

How do I list all window titles of running programs in OS X?

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

如何为 Mac OS X 完成此操作?它不一定必须在 Python 中,也不一定必须是 cross-platform。最好它 运行 不需要任何额外的下载(例如 applescript 文件或仅使用包含的命令的 bash 文件),但这不是必需的。

可能最简单的方法 "with no additional downloads" 是使用 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()

这将 return 形式的结构:

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

其中每个数组条目代表一个 运行ning 应用程序,这些数组中的每个字符串代表一个 window。空数组表示没有打开 windows.

的应用程序

(请注意,此 Javascript 在脚本编辑器中必须 运行,在网络浏览器中不能 。脚本桥的组件,包括系统事件, 无法通过网络浏览器访问。)