gpt4 book ai didi

objective-c - 像从 cmd+tab 一样获取 ProcessList

转载 作者:行者123 更新时间:2023-12-03 17:34:45 25 4
gpt4 key购买 nike

我想从 OS X 中的 cmd+tab 菜单获取应用程序。我现在得到的最好方法是将其与 AppleScript 调用关联起来,如下所示:

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] 匹配,但这似乎有点太奇怪了,无法完成此任务。

所以我的问题是:有没有一种方法不像这个那么古怪?

我对答案感到非常紧张。

最佳答案

鉴于您已经熟悉 -[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"];

关于objective-c - 像从 cmd+tab 一样获取 ProcessList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com