gpt4 book ai didi

macos - 通过 Finder 和 Applescript : how to get "item exists - replace?" dialog in Finder? 复制项目

转载 作者:行者123 更新时间:2023-12-03 17:56:43 28 4
gpt4 key购买 nike

在我的应用程序中,我喜欢让 OSX Finder 复制文件或文件夹。

(注意:我有充分的理由使用 Finder 而不是使用 shell cmds、NSWorkspace 或其他方式,因此无需在该方向上提供建议。)

我目前依靠 Applescript 要求 Finder 执行复制操作。这是用于测试的示例脚本:

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 "item already exists" warning

现在,事情是这样的:
如果我从 3rd 方应用程序脚本调试器运行此脚本,则会出现此对话框!

因此,显然有一种方法可以让 Finder 显示对话框而不是抛出异常。但是如何?谁知道这其中的 secret ?

最佳答案

好吧,为了我自己的需要,我找到了一个解决方案:我需要直接使用 AppleEvents API,而不是使用 AppleScript。

在那里,我可以提供值 kAEAlwaysInteract | kAECanSwitchLayerAESend的 SendMode 参数。这使得对话框出现在 Finder 中(并且在这种情况下还将 Finder 置于最前面)。

然而,对于依赖 AppleScript 的人来说,不幸的是,这不是一个解决方案。

关于macos - 通过 Finder 和 Applescript : how to get "item exists - replace?" dialog in Finder? 复制项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430506/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com