2013-04-29 23 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