Applescript Droplet到Droplet Communication

时间:2013-08-29 17:24:00

标签: applescript

我创建了两个小滴,一个用于重命名文件,另一个用于打印文件。它们比这更复杂,但这是本质。有时我们需要重命名它们,有时只是打印它们,有时两者都做。由于每个用户都需要进行大量的自定义,我宁愿将这两个水滴分开。

所需的工作流程:将文件拖到RenameMe Droplet,如果按住命令键,则将重命名的文件传递给PrintMe droplet。

在checkModifierKeys脚本的帮助下(抱歉,没有引用方便)我可以检查是否按下了命令键,以便处理部分脚本。问题是如何从第一个液滴触发第二个液滴。我已经尝试使用第二个Droplet作为应用程序打开文件(如下面的代码中所示)但是出现通信错误。

有什么想法吗? --Alex

示例代码:

on open the_Droppings
set flPth to POSIX path of (path to me) & "Contents/MacOS/checkModifierKeys"
set cmdPressed to (do shell script (quoted form of flPth & " command")) as integer as boolean

repeat with i from 1 to (count of items in the_Droppings)
    set file_name to "NEW NAME FROM SCRIPT" #actual script that generates name isn't relevant
    tell application "Finder"
        set name of file (item i of the_Droppings) to file_name
    end tell

    if cmdPressed is true then
        #pass the file to the PrintMe droplet       
        tell application "PrintMe"
            open (item i of the_Droppings)
        end tell
    end if
end repeat
end open

1 个答案:

答案 0 :(得分:0)

您可以向PrintMe添加一个显式的运行处理程序,这将允许您在脚本中有两个不同的入口点。两者都有争议。我在这里设置了一个文件被传递给运行处理程序,并且一个列表被传递给open处理程序,但是如果你想要,你可以将一个列表传递给运行处理程序并重复你在open中执行的方式。

在RenameMe中:

if cmdPressed is true then
    #pass the file to the PrintMe droplet       
    run script (load script file "path:to:PrintMe.app") with parameters (item i of the_Droppings)
end if

在我打印:

on open the_droppings
    repeat with i from 1 to (count the_droppings)
        process(item i of the_droppings)
    end repeat
end open

on run the_file
    process(the_file)
end run

on process(the_file)
    // Code for printing files goes here
end process