找出前台和后台运行的应用程序

0 macos objective-c

我正在使用Mac OS X.如何在前台和后台找到正在运行的应用程序的名称?

vad*_*ian 5

您可以使用所有正在运行的应用程序 NSWorkSpace

NSArray *runningApplications = [[NSWorkspace sharedWorkspace] runningApplications];
Run Code Online (Sandbox Code Playgroud)

该数组包含的实例 NSRunningApplication

假设您的意思是隐藏背景并且可以看到前景 - 相当于⌘H应用程序菜单中的快捷方式 - 您可以使用谓词过滤数组

NSPredicate *visiblePredicate = [NSPredicate predicateWithFormat:@"hidden == NO"];
NSPredicate *hiddenPredicate = [NSPredicate predicateWithFormat:@"hidden == YES"];

NSArray *visibleApplications = [runningApplications filteredArrayUsingPredicate:visiblePredicate];
NSArray *hiddenApplications = [runningApplications filteredArrayUsingPredicate:hiddenPredicate];

NSLog(@"%@", visibleApplications);
NSLog(@"%@", hiddenApplications);
Run Code Online (Sandbox Code Playgroud)

要确定当前处于活动状态的应用程序,请使用该active属性进

NSPredicate *activePredicate = [NSPredicate predicateWithFormat:@"active == YES"];
NSArray *activeApplications = [runningApplications filteredArrayUsingPredicate:activePredicate];  // actually it's always an array containing one application
NSLog(@"%@", activeApplications[0]);
Run Code Online (Sandbox Code Playgroud)