【问题标题】:Open application using AppleScript使用 AppleScript 打开应用程序
【发布时间】:2020-08-11 05:43:36
【问题描述】:

我想使用 AppleScript 打开一个应用程序。 我知道以下用于打开应用程序:

tell application "<AppName>" to activate

我也尝试过使用“设置最前面的进程”。

但是,这不适用于我要打开的应用程序。 当应用程序的窗口在后台打开时,“告诉应用程序”会将其带到最前面。另一方面,如果窗口关闭,则什么也不会发生。 我认为这是因为应用程序作为代理应用程序运行,“LSUIElement”设置为“true”。此应用程序在系统启动时由 launchctl 运行。

有没有打开这样的应用程序? 该问题可以通过“Box”应用程序重现。

期待您的友好回复。

更新: 当我手动打开应用程序时,我注意到日志文件中有以下日志消息。

ERR [main-thread](118)home view will appear
ERR [main-thread](121)UI is already loaded
ERR [main-thread](34)websecurity viewWillAppear
ERR [main-thread (1818)applicationWillbecomeActive

但是,只有最后一条消息通过 AS 出现在日志中。所以我想我必须找到其他 3 条日志消息是如何被调用的。

【问题讨论】:

  • 因为我没有安装任何名为“Box”的东西,这个神秘的应用程序是否有脚本命令来打开一个新窗口?
  • 感谢您与我们联系。 “盒子”可以在box.com/resources/downloads下载。该网站没有说明任何关于脚本命令的内容,也没有提供脚本字典。用脚本编辑器检查。
  • 您在此处使用哪种产品,适用于 Mac 的 Box Drive、适用于 Mac 的 Box Tools 或适用于 Mac 的 Box Notes?
  • 嗨@user3439894 感谢您抽出宝贵的时间。它是适用于 Mac 的 Box Drive。

标签: macos applescript automator


【解决方案1】:

LSUIElement 设置为 true 意味着应用程序将仅作为后台应用程序运行:它可以显示一个窗口,但不会出现在 Dock 或应用程序选择器中,不会接管系统菜单栏,或执行任何应用程序通常执行的其他图形界面操作。要查看它是否正在运行,请打开 Activity Monitor 并在正在运行的应用列表中搜索其名称,或者在 AppleScript 中运行以下代码:

tell application "System Events"
    set procs to name of every process
    if procs contains "<AppName>" then
        say "Whoo Hoo!"
    end if
end tell

【讨论】:

  • 这段代码可以用来检查进程是否正在运行而不显示窗口。问题是该过程没有回答“激活”。感谢您的评论。
  • @rsanda:对不起,我没有意识到显示窗口是目标;从您的帖子中并不清楚(通常后台任务会做其他事情,而面板是次要的)。我会看看你的“盒子”应用。
  • @rsanda:我安装了 Box Drive,我正试图弄清楚你说的是哪个“窗口”。 Box Drive 已集成到 Finder 中:它安装了一个侧边栏图标,用于打开存储在驱动器根级别的文件夹,它有一个状态栏菜单,用于打开搜索面板(您也可以通过 control-option- 打开命令空间组合)。还有一个帮助窗口和 Box Drive 网页的链接。您想查看哪个窗口?
  • 最好测试应用程序是否像这样运行:if application id "&lt;bundleid&gt;" is running then..." 其中&lt;bundleid&gt; 是预先获得的,一种方法是一次性评估"id of application "&lt;AppName&gt;"。这不需要应用程序是可编写脚本的,也不需要任何特殊权限,而且适用于进程名称与应用程序包不同的应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 2013-09-27
  • 1970-01-01
相关资源
最近更新 更多