2013-04-29 27 views
0

我想从OS X的CMD +选项卡菜单中的应用程序现在我得到了最好的办法就是用的AppleScript调用与以下关联的:获取ProcessList中像CMD + TAB

NSDictionary *errorDict; 
NSAppleEventDescriptor *returnValue; 
NSString *appleScriptText = @"tell application \"System Events\" to get name of (processes where background only is false)"; 
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:appleScriptText]; 

然后循环回来的东西,并将其与[[NSWorkspace sharedWorkspace] runningApplications]相匹配,但这似乎有点太怪异以完成此任务。

所以我的问题在这里:有没有像这样的古怪方式?

我真的很紧张的答案。

回答

3

鉴于您已经熟悉-[NSWorkspace runningApplications],为什么不重复这些并检查哪些符合您的标准? background only属性对应于NSRunningApplicationactivationPolicy属性不是NSApplicationActivationPolicyRegular

因此,像(未测试):

NSArray* apps = [[NSWorkspace sharedWorkspace] runningApplications]; 
NSIndexSet* indexes = [apps indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop){ 
    return [obj activationPolicy] == NSApplicationActivationPolicyRegular; 
}]; 
NSArray* names = [[apps objectsAtIndexes:indexes] valueForKey:@"localizedName"]; 
+0

“卫生署没有祈祷,注意那种财产......但我没有发现任何东西!这是解决方案!非常感谢! – mariusLAN 2013-04-29 20:42:20