1

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

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

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

4

2 回答 2

6

在 NSApplicationDelegate 你有

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

  • 应用程序将变为活动状态:
  • applicationDidBecomeActive:
  • applicationWillResignActive:
  • applicationDidResignActive:

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


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

  • NSWorkspaceDidActivateApplicationNotification

由 NSWorkspace 对象发送

于 2013-06-06T17:57:37.460 回答
4

当前活跃的应用程序:

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]);
}];
于 2013-06-06T18:48:48.823 回答