如何确定应用程序何时变为活动和不活动?

时间:2013-06-06 17:55:51

标签: objective-c macos cocoa

如何确定特定应用程序何时变为活动和无效?

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

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

2 个答案:

答案 0 :(得分:6)

在NSApplicationDelegate中你有

管理活动状态 - 仅适用于您的OWN应用程序!

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

这些实际上是由您自己的NSApplication对象发送的NSNotifications


一个通知适用于所有应用!

  • NSWorkspaceDidActivateApplicationNotification

由NSWorkspace Object

发送

答案 1 :(得分:3)

当前有效的应用程序:

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]);
}];