目标相当于AppleScript:打开目录而不将每个查找程序窗口都从中

时间:2014-01-23 20:11:37

标签: objective-c cocoa applescript finder

有这个AppleScript

tell application "Google Chrome" to set index of window 1 to 1
do shell script "open /Volumes"

这会在Finder中打开一个目录,而不会将每个其他的Finder窗口都放在前面。

目前我正在使用:

    [[NSWorkspace sharedWorkspace] openURL:fileURL];

但它的缺陷是将每个Finder窗口都放在其他窗口之上。

知道如何实现与AppleScript相同的行为吗?

2 个答案:

答案 0 :(得分:0)

如果Cocoa不提供您想要的功能,您总是可以使用NSAppleScript在Objective-C中运行applescript代码。

答案 1 :(得分:0)

猜测,-[NSWorkspace openURL:]还会向应用程序发送activate个事件,而open进程则不会。{/ p>

我建议您查看LaunchServices API。这是NSWorkspaceopen在幕后使用的内容,但为您提供了比NSWorkspace有限的API更多的控制权。

-

P.S。如果你必须从ObjC调用open(或任何其他命令行工具),你应该使用Cocoa的NSTask。 (AppleScript的do shell script命令只是它的[蹩脚]等同于NSTask。)