Mac Python关闭窗口
我想知道是否有一种方法可以观察窗户的打开和何时关闭?我在我们的Mac系统上有一个非常烦人的VPN客户端,它非常冗长,非常烦人。没有任何配置可以改变这一点,所以我想知道我是否可以编写一个Python脚本,它总是在运行并监视窗口的打开和关闭 据我所知,没有在每次打开窗口时生成的全局通知,也没有每个应用程序使用的标准通知,也没有其他方法来实现这一点,除非(a)将代码注入VPN客户端,(b)使用不推荐的功能,如Mac Python关闭窗口,python,macos,user-interface,automation,window,Python,Macos,User Interface,Automation,Window,我想知道是否有一种方法可以观察窗户的打开和何时关闭?我在我们的Mac系统上有一个非常烦人的VPN客户端,它非常冗长,非常烦人。没有任何配置可以改变这一点,所以我想知道我是否可以编写一个Python脚本,它总是在运行并监视窗口的打开和关闭 据我所知,没有在每次打开窗口时生成的全局通知,也没有每个应用程序使用的标准通知,也没有其他方法来实现这一点,除非(a)将代码注入VPN客户端,(b)使用不推荐的功能,如CGRemoteOperation,或(c)反向工程未记录的窗口服务器功能 因此,最简单的解决
CGRemoteOperation
,或(c)反向工程未记录的窗口服务器功能
因此,最简单的解决方案是定期轮询窗口并关闭它们,可能通过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程序,在现有代理前面插入您自己的代理并截获相关消息并不难。这听起来像是一个有趣的问题-cocoa解决方案涉及NSAppleEventManager,pyobjc-FWIW不支持