如何确定应用程序何时变为活动状态和非活动状态



如何确定一个特定的应用程序何时处于活动状态和非活动状态?

例如,用户打开chrome,然后切换到textmate,然后切换回chrome。

我希望能够跟踪活动应用程序的时间和内容

在NSApplicationDelegate中你有

管理活动状态—仅适用于您自己的应用程序!

  • applicationWillBecomeActive:
  • applicationDidBecomeActive:
  • applicationWillResignActive:
  • applicationDidResignActive:

那些实际上是由你自己的NSApplication对象发送的nsnotification


一个通知是所有的应用程序!

  • NSWorkspaceDidActivateApplicationNotification
NSWorkspace Object发送的

当前活动的应用程序:

NSRunningApplication * frontmost;
frontmost = [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"active == YES"]][0];

你可以得到一个通知,每次一个新的应用程序被激活,像这样:

_myObserver = [[[NSWorkspace sharedWorkspace] notificationCenter] addObserverForName:NSWorkspaceDidActivateApplicationNotification
                                                                object:nil
                                                                 queue:nil
                                                            usingBlock:^(NSNotification *note) {
    NSLog(@"New application: %@", [[note userInfo] objectForKey:NSWorkspaceApplicationKey]);
}];

最新更新