有这个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相同的行为吗?
答案 0 :(得分:0)
如果Cocoa不提供您想要的功能,您总是可以使用NSAppleScript在Objective-C中运行applescript代码。
答案 1 :(得分:0)
猜测,-[NSWorkspace openURL:]
还会向应用程序发送activate
个事件,而open
进程则不会。{/ p>
我建议您查看LaunchServices API。这是NSWorkspace
和open
在幕后使用的内容,但为您提供了比NSWorkspace
有限的API更多的控制权。
-
P.S。如果你必须从ObjC调用open
(或任何其他命令行工具),你应该使用Cocoa的NSTask
。 (AppleScript的do shell script
命令只是它的[蹩脚]等同于NSTask
。)