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

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

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

非常感谢!

【问题讨论】:

    标签: applescript


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-08
        • 2021-08-23
        • 1970-01-01
        相关资源
        最近更新 更多