Applescript Tell 特定用户启动的应用程序

Posted

技术标签:

【中文标题】Applescript Tell 特定用户启动的应用程序【英文标题】:Applescript Tell Application launched by specific user 【发布时间】:2011-06-01 20:18:53 【问题描述】:

我在同一台计算机上运行两个 Skype:一个正常启动,另一个在终端中以不同的用户帐户 B 启动。

然后,我想使用 Applescript 来告诉应用程序“Skype”(由帐户 B 启动)来做某事。我应该如何在 Applescript 中指定 B 账户启动的 Skype 实例?

非常感谢!

【问题讨论】:

【参考方案1】:

显然,如果您在 Mac 上启用远程 Apple 事件,则无需复制/重命名应用程序即可完成此操作。 (这是共享下的系统首选项,需要管理员许可,尽管您可以限制允许哪些用户发送 Apple 事件,出于安全原因,我建议这样做)。

完成后,您应该能够执行以下操作:

tell application "Skype" of machine "eppc://userB@127.0.0.1"
 -- whatever
end tell

userB当然是用户B的用户名,127.0.0.1表示“本机”或更准确的“本地主机”。

【讨论】:

我尝试了使用远程事件的建议,但没有奏效。 Applescript 无法识别用户 B 启动的正确 Skype 实例。【参考方案2】:

我不认为你可以。但是,我想到了一种解决方法。这是想法。您可以通过多种方式定位应用程序,其中一种是通过其捆绑标识符。例如,以 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”……反之亦然。

这不是一个理想的解决方案,但它会起作用。

【讨论】:

【参考方案3】:

我通过创建 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

【讨论】:

以上是关于Applescript Tell 特定用户启动的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

我的新玩具-AppleScript(四)

在 OSX 更新到优胜美地后,Applescript 无法“告诉”Spotify 播放

使用 Applescript 在 iTunes 中搜索和删除特定曲目

Applescript以使用特定编辑器在finder中打开选定的文件

Applescript以使用特定编辑器在finder中打开选定的文件

appS 是不是需要授权才能执行启动应用程序的 AppleScript?