Вам, вероятно, придется использовать сценарии графического интерфейса пользователя, что означает, что приложение должно быть открыто.Я попробовал это с Safari.Если вы посмотрите в меню «Файл», 6-й пункт меню - это пункт меню «Закрыть окно», в котором есть сочетание клавиш shift-cmd-w.Я нацелился на него, чтобы посмотреть, смогу ли я его получить ...
tell application "System Events"
tell process "Safari"
-- get the menu bar items from the main menu
tell menu bar 1
set menuBarItems to menu bar items -- apple menu, application menu, file menu etc.
end tell
-- get the menu items from a menu bar item
set fileMenuBarItem to item 3 of menuBarItems -- the file menu
tell menu 1 of fileMenuBarItem -- you have to have "menu 1" here
set menuItems to menu items
end tell
-- query the menu bar item
set closeWindowMenuItem to item 6 of menuItems -- close window menu item
tell closeWindowMenuItem
return {name, value} of attributes
end tell
end tell
end tell
Если вы посмотрите на результаты, есть пара интересных атрибутов этого пункта меню.Он имеет атрибут «AXMenuItemCmdChar», который дает мне «w» сочетания клавиш.Поэтому мы знаем, что «cmd-w» является частью ярлыка.Существует еще один атрибут под названием «AXMenuItemCmdModifiers» со значением 1. Это должен быть символ сдвига.
Так что, кажется, вы можете решить это.Это все, что я сделал, поэтому вам придется больше посмотреть на это и решить, нужны ли какие-либо другие атрибуты.Вам также нужно будет добавить повторяющиеся циклы, чтобы вы перебирали все пункты меню.
Одна вещь, которую я заметил ... если вы откроете меню файлов и нажмете клавишу "option", вы заметите пункты менюменять.Эти измененные пункты меню также присутствуют, когда вы получаете пункты меню в строке меню.Так что вы не всегда можете видеть пункты меню, которые вы получите.