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

时间:2011-06-01 20:18:53

标签: applescript

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

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

非常感谢!

MIU

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

我认为你不能。但是我想到了解决方法。这是个主意。您可以通过多种方式定位应用程序,其中一种方法是通过其包标识符。例如,要定位TextEdit,你可以这样做......

tell application id "com.apple.TextEdit" to activate

考虑到这一点,您的2个运行版本的Skype需要具有不同的捆绑ID,以便您可以单独定位它们。现在情况并非如此,但你可以做到这一点。只需复制skype应用程序(制作副本)。然后打开副本的包内容,在那里打开“info.plist”文件,找到包标识符键,并将其更改为其他内容。现在你有2个版本的skype和不同的bundle id,这意味着你可以单独定位它们。

我使用TextEdit检查了这个。我制作了一个副本并将其包ID设置为“com.apple.myTextEdit”。我打开了两个应用程序,可以单独定位它们。因此,用户B可以使用“com.apple.myTextEdit”,普通用户可以使用“com.apple.TextEdit”......反之亦然。

这不是一个理想的解决方案,但它可行。

答案 2 :(得分:0)

我最终通过创建两个Skype.app副本来解决它,并将新的一个重命名为“Skype2.app”。用户A(通过终端)由用户A和Skype2.app启动Skpye.app。然后,在Applescript

tell application "Skype"
 -- do something for user A
end tell

tell application "Skype2"
 -- do something else for user B
end tell