如何通过Mac App以编程方式关注Desktop / Finder?

时间:2013-03-15 20:10:32

标签: objective-c macos cocoa desktop finder

我希望通过我的应用程序关注Desktop / Finder,特别是如果用户当前位于全屏应用程序中。 我一直在尝试使用像:

这样的东西
[[NSWorkspace sharedWorkspace] launchApplication:@"Finder"];

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

但是使用这些代码行,新的Finder窗口将打开“所有文件”。
我只想关注桌面/取景器,我该怎么做?寻找App Store准备好的代码。
谢谢!

3 个答案:

答案 0 :(得分:10)

你可以使用cocoa的NSWorkspace来做 - 不需要特殊的权利

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

for (NSRunningApplication *app in apps) {
    if([app.bundleIdentifier.lowercaseString isEqualToString:@"com.apple.finder"]) {
        [app activateWithOptions:NSApplicationActivateAllWindows|NSApplicationActivateIgnoringOtherApps];
        break;
    }
}

答案 1 :(得分: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>

您可以详细了解权利过程herehere

我知道这不是一个完整的答案 - 我不是一个mac专家。我只是想试着指出你正确的方向来解决你的问题。

答案 2 :(得分:0)

使用NSRunningApplication.runningApplications

快速
NSRunningApplication.runningApplications(withBundleIdentifier: "com.apple.finder").first?.activate(options: [])