在OS X上监控应用切换 [英] Monitoring app switching on OS X

查看:386
本文介绍了在OS X上监控应用切换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道,在Swift应用程序中,当用户从一个应用程序更改为另一个应用程序时。

I want to know, from within a Swift application, when the user changes from one application to another, just in general.

例如:从Google Chrome切换到不同的应用程序像Xcode会触发此事件。

For example: switching from Google Chrome to a different app like Xcode would trigger this event.

是否有任何方法来获取应用程序切换事件,例如通过事件监视器?

Is there any way to pick up application switching events, like through an event monitor perhaps?

推荐答案

您可以在 NSWorkspace.sharedWorkspace()。notificationCenter 中添加观察器, c $ c> NSWorkspaceDidActivateApplicationNotification 键。您可以将选择器指向其中一个方法,并从 userInfo 字典中获取信息。

You can add an observer on NSWorkspace.sharedWorkspace().notificationCenter watching for the NSWorkspaceDidActivateApplicationNotification key. You point the selector at one of your methods and grab the information from the userInfo dictionary.

AppDelegate中的简单示例:

Simple example in AppDelegate:

Swift 2.2

func applicationDidFinishLaunching(notification: NSNotification) {
    NSWorkspace.sharedWorkspace().notificationCenter.addObserver(self,
                                                        selector: #selector(activated),
                                                        name: NSWorkspaceDidActivateApplicationNotification,
                                                        object: nil)
}

func activated(notification: NSNotification) {
    if let info = notification.userInfo,
        app = info[NSWorkspaceApplicationKey],
        name = app.localizedName {
            print(name)
    }
}

Swift 3

func applicationDidFinishLaunching(_ aNotification: Notification) {
    NSWorkspace.shared().notificationCenter.addObserver(self,
                                                        selector: #selector(activated),
                                                        name: NSNotification.Name.NSWorkspaceDidActivateApplication,
                                                        object: nil)
}

func activated(notification: NSNotification) {
    if let info = notification.userInfo,
        app = info[NSWorkspaceApplicationKey],
        name = app.localizedName {
            print(name)
    }
}

这篇关于在OS X上监控应用切换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆