Applescript告诉特定用户启动的应用程序

Applescript告诉特定用户启动的应用程序,applescript,Applescript,我在同一台计算机上运行两个Skype:一个正常启动,另一个在终端中以不同的用户帐户B启动 然后,我想使用Applescript告诉应用程序“Skype”(由帐户B启动)做一些事情。我应该如何在Applescript中指定由帐户B启动的Skype实例 非常感谢 缪我想你做不到。然而,我想到了一个解决办法。这是我的想法。您可以通过多种方式将应用程序作为目标,其中一种方式是通过其包标识符。例如,要以文本编辑为目标,您可以这样做 tell application id "com.apple.TextEd

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

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

非常感谢


我想你做不到。然而,我想到了一个解决办法。这是我的想法。您可以通过多种方式将应用程序作为目标,其中一种方式是通过其包标识符。例如,要以文本编辑为目标,您可以这样做

tell application id "com.apple.TextEdit" to activate
考虑到这一点,您的两个运行版本的skype需要有不同的捆绑ID,以便您可以分别针对它们。现在不是这样,但你可以做到。只需复制skype应用程序(复制一份)。然后打开副本的包内容,打开其中的“info.plist”文件,找到包标识符键,并将其更改为其他内容。现在,您有两个版本的skype,它们具有不同的捆绑包ID,这意味着您可以分别针对它们

我用TextEdit检查了这个。我复制了一个副本,并将其bundle 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

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

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

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

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

我尝试了使用远程事件的建议,但没有成功。Applescript无法识别由userB启动的Skype的正确实例。