我正在使用辅助功能API来检测某个应用程序何时打开窗口,关闭窗口,何时移动窗口或调整窗口大小,或者进行主要和/或聚焦.但是,客户端应用程序似乎在没有触发Accessibility API通知的情况下将窗口移到前面.
我的应用程序如何检测另一个应用程序何时将窗口置于前面而不使其成为关键?
我希望找到适用于OS X 10.4和10.5的解决方案
更多信息:我现在正在使用这些声明.当用户手动选择窗口将其置于前面时,它们可以正常工作.但是,当应用程序本身将窗口移到前面时,它确实不起作用.
AXObserverAddNotification(observer, element, kAXMainWindowChangedNotification, 0);
AXObserverAddNotification(observer, element, kAXFocusedWindowChangedNotification, 0);
Run Code Online (Sandbox Code Playgroud) 在Mac上的Cocoa中,我想检测何时移动,调整大小或重新绘制属于另一个应用程序的窗口.我怎样才能做到这一点?
我创建了一个应用程序,用于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.
谢谢!