【发布时间】:2011-06-01 20:18:53
【问题描述】:
我在同一台计算机上运行两个 Skype:一个正常启动,另一个在终端中以不同的用户帐户 B 启动。
然后,我想使用 Applescript 来告诉应用程序“Skype”(由帐户 B 启动)来做某事。我应该如何在 Applescript 中指定 B 账户启动的 Skype 实例?
非常感谢!
缪
【问题讨论】:
标签: applescript
我在同一台计算机上运行两个 Skype:一个正常启动,另一个在终端中以不同的用户帐户 B 启动。
然后,我想使用 Applescript 来告诉应用程序“Skype”(由帐户 B 启动)来做某事。我应该如何在 Applescript 中指定 B 账户启动的 Skype 实例?
非常感谢!
缪
【问题讨论】:
标签: applescript
显然,如果您在 Mac 上启用远程 Apple 事件,则无需复制/重命名应用程序即可完成此操作。 (这是共享下的系统首选项,需要管理员许可,尽管您可以限制允许哪些用户发送 Apple 事件,出于安全原因,我建议这样做)。
完成后,您应该能够执行以下操作:
tell application "Skype" of machine "eppc://userB@127.0.0.1"
-- whatever
end tell
userB当然是用户B的用户名,127.0.0.1表示“本机”或更准确的“本地主机”。
【讨论】:
我不认为你可以。但是,我想到了一种解决方法。这是想法。您可以通过多种方式定位应用程序,其中一种是通过其捆绑标识符。例如,以 TextEdit 为目标,您可以这样做...
tell application id "com.apple.TextEdit" to activate
考虑到这一点,您的 2 个运行版本的 Skype 将需要具有不同的捆绑 ID,以便您可以分别定位它们。现在不是这种情况,但你可以做到这一点。只需复制 Skype 应用程序(制作副本)。然后打开副本的包内容,打开里面的“info.plist”文件,找到bundle identifier key,改成别的。现在您有 2 个版本的 Skype,具有不同的捆绑 ID,这意味着您可以分别定位它们。
我使用 TextEdit 进行了检查。我制作了一个副本并将其捆绑 ID 设置为“com.apple.myTextEdit”。我打开了这两个应用程序,可以分别针对它们。所以用户 B 可以使用“com.apple.myTextEdit”,而普通用户可以使用“com.apple.TextEdit”……反之亦然。
这不是一个理想的解决方案,但它会起作用。
【讨论】:
我通过创建 Skype.app 的两个副本并将新的副本重命名为“Skype2.app”来解决这个问题。 Skpye.app 由用户 A 启动,Skype2.app 由用户 B 启动(通过终端)。然后,在 Applescript 中
tell application "Skype"
-- do something for user A
end tell
tell application "Skype2"
-- do something else for user B
end tell
【讨论】: