我想将我的应用程序作为菜单栏应用程序,我已经做到了。而且我还想跟踪正在运行的应用程序。
NSRunningApplication 方法返回所有正在运行的应用程序。但我想检测现在唯一激活的应用程序。(用鼠标单击或命令+选项卡...)我怎样才能找到它?
我在下面编写了代码:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(performTimerBasedUpdate) userInfo:nil repeats:YES];
}
- (void)performTimerBasedUpdate {
nowRunning = [NSRunningApplication currentApplication];
nowRunningName = [nowRunning localizedName];
}
但是,它返回我创建的应用程序名称(self)。
- 已回答
我终于找到答案了:谢谢i-blis。我可以使用过滤器获得激活的应用程序。我不知道 isActive 属性!
runningApplications_ = [[NSWorkspace sharedWorkspace] runningApplications];
nowRunning = [[runningApplications_ filteredArrayUsingPredicate:isActive] objectAtIndex:0];
bundleIdentifier_ = [nowRunning bundleIdentifier];
localizedName = [nowRunning localizedName];