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 特定用户启动的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
在 OSX 更新到优胜美地后,Applescript 无法“告诉”Spotify 播放
使用 Applescript 在 iTunes 中搜索和删除特定曲目
Applescript以使用特定编辑器在finder中打开选定的文件