我想知道是否有办法观察窗户打开以及何时关闭?我在我们的 Mac 系统上有一个非常烦人的 VPN 客户端,它非常冗长而且非常烦人。没有配置可以改变这一点,所以我想知道是否可以编写一个始终运行并监视窗口打开和关闭的 Python 脚本?
问问题
819 次
1 回答
0
据我所知,每次打开窗口时都不会生成全局通知,也没有每个应用程序使用的标准通知,而且通常没有其他方法可以做到这一点,除非(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 程序以将您自己的委托插入现有委托并拦截相关消息并不难。
于 2013-06-04T22:04:35.403 回答