2014-01-23 56 views
0

有這個的AppleScript目的相當於AppleScript的:打開目錄,而不從

tell application "Google Chrome" to set index of window 1 to 1 
do shell script "open /Volumes" 
這將打開在Finder中一個目錄,而不使每onther Finder窗口的前

調動一切取景窗口。

目前我使用:

[[NSWorkspace sharedWorkspace] openURL:fileURL]; 

但它有缺陷,使每一個Finder窗口對他人的頂部。

任何想法如何實現與AppleScript相同的行爲?

回答

0

如果Cocoa沒有提供您想要的功能,您總是可以使用NSAppleScript在Objective-C中運行applescript代碼。

+0

我意識到這一點,但正在尋找一些不叫AppleScript的東西。 –

+0

如果'NSWorkspace'沒有提供一個方法來打開只有一個窗口沒有把每個發現者的窗口放在焦點上,那麼我懷疑你可以用Cocoa來做。如果你不想求助於applescript,你總是可以使用代碼注入,但這對於這樣一個簡單的任務來說似乎太過矯枉過正。 – TheAmateurProgrammer

0

猜測,-[NSWorkspace openURL:]也發送應用程序activate事件,而open過程不會。

我建議查看LaunchServices API。這是NSWorkspaceopen在幕後使用,但給你比NSWorkspace有限的API更多的控制。

-

p.s.如果您必須從ObjC調用open(或任何其他命令行工具),則應使用Cocoa的NSTask。 (AppleScript的do shell script命令只是它的[蹩腳]相當於NSTask。)