私のアプリでは、OSX Finder にファイルまたはフォルダーをコピーさせるのが好きです。
(注:シェルコマンド、NSWorkspace、またはその他の手段を使用する代わりにFinderを使用するのには十分な理由があるため、その方向での提案は必要ありません。)
私は現在、Finder にコピー操作を実行するよう依頼するために Applescript に依存しています。テスト用のサンプル スクリプトを次に示します。
tell application "Finder"
try
copy file POSIX file "/etc/bashrc" to folder POSIX file "/private/tmp"
-- alternative with same behavior:
--duplicate POSIX file "/etc/bashrc" to POSIX file "/private/tmp"
on error errmesg number errn
display dialog "Error thrown: " & errmesg
end try
end tell
問題は次のとおりです。目的のアイテムが既に存在する場合、スクリプトはエラーをスローし、コピー操作をキャンセルします。
ただし、次のように、Finder でインタラクティブにコピー操作を行うときに表示される「アイテムが存在します」ダイアログを Finder に表示させたいと思います。
さて、ここ に問題があります。このスクリプトをサードパーティ アプリのスクリプト デバッガーから実行すると、このダイアログが表示されます。
したがって、明らかに、例外をスローする代わりに Finder にダイアログを表示させる方法があります。しかし、どのように?これの秘密を誰が知っていますか?