【问题标题】:How do I list all window titles of running programs in OS X?如何列出 OS X 中正在运行的程序的所有窗口标题?
【发布时间】:2015-04-28 08:51:12
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    可能最简单的“无需额外下载”的方法是使用 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 浏览器中。脚本桥的组件,包括系统事件,在 Web 浏览器中不可用。)

    【讨论】:

    • 空数组也可能属于其他桌面上有窗口的进程,对吧?有没有办法获取所有进程中所有窗口的名称?
    • @AlokMysore 系统事件与多个桌面交互的方式很奇怪。其他桌面上的 Windows 有时可见,有时不可见……我不知道如何描述它而不是“错误”。
    猜你喜欢
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2020-07-22
    • 2010-11-14
    相关资源
    最近更新 更多