【问题标题】:Correct handler in AppleScript to respond to the "open" Unix command for a custom URL handling appletAppleScript 中的正确处理程序以响应自定义 URL 处理小程序的“打开”Unix 命令
【发布时间】:2012-12-03 13:38:38
【问题描述】:

我正在尝试编写一个简单的 AppleScript 应用程序来处理我的 Mac 上的 sftp:// 和 sshfs:// URL。基于一个好的guide on how to create a custom URL handler app in AppleScript,我写了a small app如下,当我点击一个带有相应方案的URL时效果很好。实际工作是在调​​用 sshfs(FUSE) 的单独 shell 脚本中完成的,我使用 AppleScript 只是为了将其与操作系统接口。

on open location theURL
    set cmd to (quoted form of (get POSIX path of (path to resource "sshfs.sh" in directory "Scripts"))) & " " & theUrl
    do shell script cmd
end open location

但是,如果我使用终端中的 open 命令,此自定义 URL 处理程序 AppleScript 应用程序将无法工作,例如,

open sftp://host/path

我尝试添加其他处理程序,发现命令行方式调用on run argv 处理程序而不是我编写的处理程序,但无法弄清楚如何访问传递的 URL 参数。当直接调用脚本时,我可以正确访问 URL,例如,osascript my.applescript sftp://host/path。尝试了 ASObjC Runner,但没有帮助。

AppleScript 应用程序中是否有标准处理程序或方法来接收通过open Unix 命令传递的参数? 似乎它依赖于 AppleEvents,但我找不到好的描述如何使用 AppleScript 在命令和本机应用程序之间发挥相同魔力的参考。

【问题讨论】:

    标签: macos url applescript appleevents


    【解决方案1】:

    为什么不在您的“运行中处理程序”中处理它?像这样的...

    on run argv
        set theArg to item 1 of argv
        if theArg starts with "sftp://" then
            open location theArg
        else
            -- do the normal applescript code
        end if
    end run
    

    或者你是说“open”unix 命令没有传递参数?

    【讨论】:

    • 感谢您的回答,但这正是我尝试过的。当我使用“open”unix 命令时,运行处理程序的argv 以某种方式设置为current application,因此item 1 of argv 给出了错误。但是,当我直接使用 osascript 调用时,它是一个字符串列表。很奇怪,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多