0

如何通过 EPPC 将显示对话框发送到远程机器?我相信发行说明中的​​ Scripting Addition Security 讨论了这个问题,但我还没有能够解决它。发行说明

尝试 1

using terms from application "Finder"
    set remoteFinder to application "Finder" of machine "eppc://user:password@host"
    tell remoteFinder to display dialog "Hi!" buttons {"A", "B"}
end using terms from

在此处输入图像描述

尝试 2 应用程序“dispD.app”保存在远程机器上,应该接受 yourMessage 参数。

on run {yourMessage}
    display dialog yourMessage buttons {"A", "B"}
end run

我从本地计算机运行此脚本:

using terms from application "Finder"
    set remoteFinder to application "Finder" of machine "eppc://user:password@host"
    tell remoteFinder to run script file "path:to:my:dispD.app" with parameters {"Hi!"}
end using terms from

在此处输入图像描述

4

1 回答 1

1

我认为您想要做的事情可能无法直接完成,尽管很难找到这方面的文档,我不能 100% 确定。MacScripter(例如这个)和 Apple 论坛上的各种主题表明通过 EPPC 与 OSAXen(“脚本添加”)交谈时存在各种问题。(线程有点混乱,因为它们都分散成红色鲱鱼,但我认为其中一些有相关信息。)“显示对话框”命令不是 Finder(或系统事件)的一部分,它是标准添加 OSAX。

这实际上很难从 AppleScript 中测试,因为 OSAX 添加是自动引入的。但是从 appscript,您可以手动将 OSAX 附加到这样的应用程序:

sa = osax.ScriptingAddition('StandardAdditions', name='Finder')
sa.display_dialog('hi')

正如预期的那样,这有效。虽然这给出了“未知的属性、元素或命令”:

f = app(name='Finder')
f.display_dialog('hi')

现在,如果我执行一个实际的 Finder 命令,如下所示:

f.windows()

一切正常。如果我想远程处理:

rf = app(url='eppc://test:test@localhost/Finder')
rf.windows()

没问题。但现在:

sa = osax.ScriptingAddition('StandardAdditions', url='eppc://test:test@localhost/Finder')
sa.display_dialog('hi')

这适用于 10.5,但不适用于 10.6、10.7 或 10.8。(嗯,在我可以访问的 8 台机器中,它可以在运行 10.5 的机器上运行,但不能在运行 10.6+ 的 7 台机器上运行)。

所以,我认为这是你的问题。

至于解决方案,我可以想到一些解决方法:

  • 不要使用远程脚本,而是使用 ssh + 本地 osascript。
  • 使用cocoadialog、 pashua 等,并使用 驱动它们do shell script,而不是使用display dialog. (这将要求您在远程目标机器上拥有相应的工具,而不是在本地机器上。)
  • 远程脚本一些可以本地显示对话框的应用程序,而不是依赖于 StandardAdditions。(我不知道任何股票应用程序是否有任何方法可以做到这一点,所以这可能需要在远程机器上安装一些东西,在这种情况下你不妨只使用 cocoadialog。)
于 2012-07-17T02:01:06.243 回答