【问题标题】:Mac Python Close WindowMac Python 关闭窗口
【发布时间】:2013-05-31 10:48:35
【问题描述】:

我想知道是否有一种方法可以监视窗口是否打开以及何时关闭?我在我们的 Mac 系统上有一个非常烦人的 VPN 客户端,它非常冗长而且非常烦人。没有配置可以改变这一点,所以我想知道我是否可以编写一个始终运行并监视窗口打开和关闭的 Python 脚本?

【问题讨论】:

    标签: python macos user-interface automation window


    【解决方案1】:

    据我所知,每次打开窗口时都不会生成全局通知,也没有每个应用程序使用的标准通知,而且通常没有其他方法可以做到这一点,除非 (a) 将代码注入VPN 客户端,(b) 使用不推荐使用的功能,如 CGRemoteOperation,或 (c) 对未记录的 Window Server 功能进行逆向工程。

    因此,最简单的解决方案是定期轮询窗口并关闭它们,可能使用通过 ScriptingBridge、NSAppleScript(通过 pyobjc)或 appscript 编写的 UI 脚本。

    例如:

    se = appscript.app('SystemEvents')
    while True:
        try:
            client = se.application_processes['Annoying VPN Client']
            window = client.windows['Annoying Window']
            close = window.buttons[1]
            close.click()
        except Exception as e:
            print('Exception: {}'.format(e))
        time.sleep(1)
    

    如果您对其他选项感兴趣(无法通过 Python 实现),请告诉我。如果您熟悉系统级 C 和 ObjC 编程,那么创建一个挂钩到 ObjC 运行时的 SIMBL 程序以将您自己的委托插入现有委托并拦截相关消息并不难。

    【讨论】:

    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2011-09-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多