AppleScript快速行动服务快捷方式问题-MacOS Catalina

AppleScript快速行动服务快捷方式问题-MacOS Catalina,applescript,keyboard-shortcuts,macos-catalina,automator,system-services,Applescript,Keyboard Shortcuts,Macos Catalina,Automator,System Services,运行时间:MacOS Catalina 10.15.5 我在Automator中做了一个快速操作,它工作得很好。事实上,我已经用了几年了。操作本身中的代码不是问题所在,也不允许在系统首选项中使用可访问性/控件。至少可以说,我的问题令人难以置信,我似乎无法解决它,我想我应该问问蜂巢思维 在使用AppleScript快速执行操作并确保“工作流接收:任何应用程序中均无输入”与正常操作相同后,进入并在系统首选项-->键盘-->快捷键-->服务中为快捷键“F13”分配快捷键后,一切似乎都很好 在我使用此快

运行时间:MacOS Catalina 10.15.5

我在Automator中做了一个快速操作,它工作得很好。事实上,我已经用了几年了。操作本身中的代码不是问题所在,也不允许在系统首选项中使用可访问性/控件。至少可以说,我的问题令人难以置信,我似乎无法解决它,我想我应该问问蜂巢思维

在使用AppleScript快速执行操作并确保“工作流接收:任何应用程序中均无输入”与正常操作相同后,进入并在系统首选项-->键盘-->快捷键-->服务中为快捷键“F13”分配快捷键后,一切似乎都很好

在我使用此快捷方式的应用程序中,如果我将鼠标悬停在应用程序主下拉列表上,并将鼠标悬停在“服务”上,则该项就在那里,并且有一个与之关联的快捷方式“F13”。如果我从下拉菜单中选择快捷方式,它将非常有效

问题是,如果我在键盘上点击'F13',服务将连续运行3次。这几乎就好像系统服务认为我想运行特定的项目3x。我也尝试过许多不同的快捷键(简单到:F13,复杂到:⌘⌥⌃⇧N) 快捷键也没有产生任何积极的结果

我到处都查过了,似乎找不到发生这种情况的原因。如有任何见解/帮助,将不胜感激。这不是应用程序描述问题。由于某种原因,操作系统导致服务菜单项出现三重选择。这似乎也不是一个关键的中继器问题


提前谢谢

据我所知,问题不是工作流运行了三次,而是您收到了一系列三条安全错误消息。似乎当您尝试使用键盘快捷键运行服务时,系统会调用xpc服务(位于automator应用程序包内的com.automator.runner.xpc),该服务会触发安全警报,因为它没有GUI脚本所需的访问权限。没有明显的方法授予xpc适当的权限(我怀疑这将是一个巨大的安全漏洞),因此这是不可行的

然而,有一个解决办法。获取运行脚本,将其复制到新的脚本编辑器窗口中,并使用保存窗口左下角的“文件格式”下拉菜单将其保存为应用程序:

授予此应用程序使用辅助功能的权限:

  • 系统首选项→ 安全与隐私→ 隐私→ 可达性
现在,在automator中创建一个服务,该服务使用
启动应用程序
操作启动刚刚创建的脚本应用程序。将您的键盘快捷键指定给该服务,事情就会按您的喜好进行

当然,这会启动一个应用程序,将其显示在Dock中,并瞬间抓住前景,这可能会在视觉上分散注意力。如果希望它在后台以静默方式运行,请执行以下操作:

  • 右键单击脚本应用程序的图标,然后选择
    显示软件包内容

  • 向下钻取两个级别以查找
    info.plist
    文件,并在TextEdit、BBEdit或其他纯文本编辑器中打开它

  • 将以下密钥/值对添加到文件中(注意不要拆分其他密钥/值组):

    LSUIElement
    
  • 保存info.plist文件,然后再次运行应用程序;它应该是匿名的


  • 我认为,这更多的是关于应用程序的使用(自动机),而不是编码。你应该考虑超级用户网站。可能不在这里。快速行动有什么用?谢谢Jay和Ted的回复。Jay,你能给我一个你所指的网站的链接吗?Ted,这个快速操作真的很简单,它在一个应用程序内部的窗口上点击一个按钮,将数据发送到另一个应用程序。快速行动是非常有帮助的。当我按快捷键运行“快速操作”时,菜单栏中的应用程序窗口会亮起三次,表示我按了三次快捷键,然后该服务连续运行了三次,结果它自己出错了。这可能是一个自动机问题?在评论中添加“@”标签很有用,这样其他人就会收到通知:例如,键入@Jay,Jay就会看到你已经回复了他。原始问题询问者将收到所有通知,您可以在每条评论中为另一个人添加一个标记。在我看来,使用终端更容易,例如,
    defaults write'/path/to/$name.app/Contents/Info.plist'LSUIElement-bool yes
    替换
    /path/to/$name
    ,视情况而定。@user3439894:hah,那是我永远不会想到的。
    <key>LSUIElement</key>
    <true/>