使用 Python 检测 OS X 中最前面的应用程序的变化

5 python macos cocoa pyobjc

我创建了一个应用程序,用于pyobjc监视我正在使用的当前应用程序或当前 URL(如果正在使用 Safari/Chrome)。我使用以下方式获得最前面的应用程序:

active_app_name = NSWorkspace.sharedWorkspace().frontmostApplication().localizedName()
Run Code Online (Sandbox Code Playgroud)

它在每秒检索信息的循环中运行。然而,考虑到我可能会丢失信息超过 30 秒,这个解决方案似乎效率很低。

我想知道是否有使用事件的解决方案,即有一个观察者在当前最前面的应用程序发生变化时进行侦听。

我找到了这个答案Mac OS X - How to Monitor a window change event? ,但有两个问题:1.我只需要有关应用程序的信息,而不需要有关特定窗口的信息,2.我不知道如何将这些消息转换为Python代码。

AppleScript 解决方案是合适的,因为我可以使用osascript.

谢谢!