AppleScript:如何激活仅使用option down键(不带快捷键)显示的菜单项

AppleScript:如何激活仅使用option down键(不带快捷键)显示的菜单项,applescript,accessibility,uiaccessibility,Applescript,Accessibility,Uiaccessibility,我确实在这里和“AskDifferent”上下查找了很多问题,但找不到这个基本问题的有效答案: 如何通过编程“激活”一个菜单项,该菜单项只有在按下选项键时才可见,并且没有自己的快捷方式? 我知道如何使用: click menu item "Save as …" ... [or:] perform action of menu item "..." ... 。。。很好。 我还了解了以前设置的命令,如: key down option [or:] keystroke "whateve

我确实在这里和“AskDifferent”上下查找了很多问题,但找不到这个基本问题的有效答案:

如何通过编程“激活”一个菜单项,该菜单项只有在按下选项键时才可见,并且没有自己的快捷方式?
我知道如何使用:

click menu item "Save as …" ...  [or:]  perform action of menu item "..." ...
。。。很好。
我还了解了以前设置的命令,如:

key down option    [or:]  keystroke "whatever" using option down
但是,这些都不会在“定期”不可见的菜单项上执行简单的单击


允许,使用现有快捷方式(如“option shift command s”)将按预期“另存为…”:

keystroke "s" using {option down, shift down, command down}


(更远的地方,我被pbell证明是错误的;下面是我最新的“简化”解决方案:


(正如我现在发现的,这段代码将做完全相同的事情。)

您必须使用“向下键”和“向上键”指令。下面的脚本完成您要查找的内容。它显示了带有“向下键”选项的脚本编辑器的菜单窗口

tell application "System Events"
tell process "Script Editor"
    key down option
    click menu bar item 9 of menu bar 1 --using {option down}
    delay 2 -- just to show ! to be replaced by your click on your menu item
    key up option -- don't forget this : if you do, it keeps option down until you force to quit the process !!!
end tell    
end tell

您必须使用“向下键”和“向上键”指令。下面的脚本将执行您要查找的内容。它显示带有“向下键”选项的脚本编辑器的菜单窗口

tell application "System Events"
tell process "Script Editor"
    key down option
    click menu bar item 9 of menu bar 1 --using {option down}
    delay 2 -- just to show ! to be replaced by your click on your menu item
    key up option -- don't forget this : if you do, it keeps option down until you force to quit the process !!!
end tell    
end tell

实际上,所有菜单项都可以通过系统事件/GUI脚本访问,即使它们不可见。不需要更改修改键

此代码足够了。可以省略使应用程序位于最前端的行,因为即使应用程序不在前台,也可以访问菜单项

tell application "System Events"
    tell process "Script Editor"
        set frontmost to true -- replaces 'activate application "Script Editor"'
        perform action "AXPress" of menu item "Arrange in front" of menu "Window" of menu bar item "Window" of menu bar 1
    end tell
end tell

实际上,所有菜单项都可以通过系统事件/GUI脚本访问,即使它们不可见。不需要更改修改键

此代码足够了。可以省略使应用程序位于最前端的行,因为即使应用程序不在前台,也可以访问菜单项

tell application "System Events"
    tell process "Script Editor"
        set frontmost to true -- replaces 'activate application "Script Editor"'
        perform action "AXPress" of menu item "Arrange in front" of menu "Window" of menu bar item "Window" of menu bar 1
    end tell
end tell
我会用这个:

activate application "Script Editor"
tell application "System Events"
    tell process "Script Editor"
        click menu item "Arrange in Front" of menu 1 of menu bar item "Window" of menu bar 1
    end tell
end tell
瓦迪安的方法也是一种可接受的方法。

我将使用以下方法:

activate application "Script Editor"
tell application "System Events"
    tell process "Script Editor"
        click menu item "Arrange in Front" of menu 1 of menu bar item "Window" of menu bar 1
    end tell
end tell

瓦迪安的方法也是可以接受的。

非常感谢!实际上我想做的正是你建议的。所以解决方案都是你的,但我会在最后一个答案中写上“我的”想要的解决方案。非常感谢!实际上我想做的正是你建议的。所以解决方案都是你的,但我会在最后一个答案中写上“我的”想要的解决方案。你是对的……但是:你两次调用的tell命令已经“集成”在我的“精益”一行程序中,它使用“执行操作…”,作为“脚本编辑器”我知道,这只是为了更好的可读性。顺便说一下:
的应用程序“系统事件”
在您的单行数据库中是冗余的,瓦迪安。(冗余源于系统事件的自我信息到我的查询:…菜单项的操作“排列在前面…”
执行菜单项的操作“AXPress”安排在前面“
”——这很聪明。感谢分享。这个答案的“帖子”是:……甚至可以执行操作,在任何应用程序的“打开文件”对话框窗口中访问弹出列表中列出的“最近使用的文件夹”之一?(类似于下拉菜单本身,带有用户特定的文件夹名称)…我不能让它工作,我用点击代替…:-(你是对的…但是:你两次调用的tell命令已经“集成”在我的“精益”一行中,使用“执行操作…”,因为在这行的末尾调用了“脚本编辑器”。我知道,这只是为了更好的可读性。顺便说一下:
的应用程序“系统事件
在您的单线银行中是冗余的,瓦迪安。(冗余源于系统事件对我的查询的自我信息:…菜单项“排列在前面”的操作…
执行菜单项“排列在前面”的操作“AXPress”
——这非常聪明。感谢分享。一个“发帖问题”对此答案:…可以执行操作,甚至可以访问任何应用程序的“打开文件”对话框窗口中弹出列表中列出的“最近使用的文件夹”(类似于下拉菜单本身,带有用户特定的文件夹名称)…我无法使其工作,我使用了单击来代替…:-(