3

我想通过我的应用程序关注桌面/查找器,特别是如果用户当前在全屏应用程序中。我一直在尝试使用类似的东西:

[[NSWorkspace sharedWorkspace] launchApplication:@"Finder"];

[[NSWorkspace sharedWorkspace] openFile:nil withApplication:@"Finder"];

但是使用这些代码行,一个新的 Finder 窗口将打开“所有文件”。
我只想专注于桌面/Finder,我该怎么做?寻找适用于 App Store 的代码。
谢谢!

4

3 回答 3

12

您可以使用可可的 NSWorkspace 来完成 - 不需要特殊权利

NSArray *apps = [[NSWorkspace sharedWorkspace] runningApplications];

for (NSRunningApplication *app in apps) {
    if([app.bundleIdentifier.lowercaseString isEqualToString:@"com.apple.finder"]) {
        [app activateWithOptions:NSApplicationActivateAllWindows|NSApplicationActivateIgnoringOtherApps];
        break;
    }
}
于 2013-03-15T22:18:22.697 回答
2

这可以使用 applescript 来完成,经过一些研究和一些权利条目后,它应该可以与 mac 商店应用程序一起使用。

这是一个 AppleScript 脚本,可以满足您的要求:

tell application "Finder" to activate

权利条目:

<key>com.apple.security.temporary-exception.apple-events</key>
<array>
    <string>com.apple.finder</string>
</array>

您可以在此处此处阅读有关权利流程的更多信息。

我知道这不是一个完整的答案 - 我不是 Mac 专家。我只是想尝试为您指出解决问题的正确方向。

于 2013-03-15T21:54:14.577 回答
0

斯威夫特,使用NSRunningApplication.runningApplications

NSRunningApplication.runningApplications(withBundleIdentifier: "com.apple.finder").first?.activate(options: [])
于 2020-10-14T14:06:15.170 回答