繁体   English   中英

通过Python查找ActiveX在OSX中何时更改

[英]Finding when the ActiveApplication changes in OSX through Python

有没有办法找到当ActiveApplication通过Python和AppKit在OSX中更改时? 我知道如何找出launchedApplication和activeApplication(请在这里参考我的另一个问题: 使用Python在Mac OS X中查找当前的活动窗口

我有一个OS X应用程序 ,它通过使用NSTimer进行轮询来实现 我尝试搜索分布式通知,以查看是否可以找到更好的方法,但是看不到任何非常有用的东西。

启动退出应用程序时,我确实收到通知。 至少有一点帮助。 您可以在控制器唤醒的地方看到这些注册。

该应用程序对我非常有帮助,甚至每秒轮询几乎不占用任何CPU。 但是,如果我可以使它更多地受事件驱动,那就可以了。 :)

我不知道执行此操作的“官方” /好方法,但是解决此问题的一种方法是侦听任何分布式通知,并查看最前端应用程序更改时总是触发哪些通知,以便您可以收听那个:

您可以这样设置:

def awakeFromNib(self):
    NSDistributedNotificationCenter.defaultCenter().addObserver_selector_name_object_(
        self, 'someNotification:', None, None)

def someNotification_(self, notification):
    NSLog(notification.name())

找到一个在切换应用程序时始终会触发的通知后,可以用该通知的名称替换addObserver_etc_调用中的第一个“无”,并在“ someNotification_”方法中检查最前面的应用程序。

就我而言,我注意到每次切换应用程序时都会触发“ AppleSelectedInputSourcesChangedNotification”,所以我会听。

请记住,这可能会随时中断,并且您将经常检查最前端应用程序中的更改,而不是需要的次数。

一定有更好的方法..希望:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM