簡體   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