OS X: доступ к главному меню самого переднего приложения
---редактировать---
есть приложение под названием Keycue
который выполняет эту функцию.
---/редактировать---
--- редактировать редактировать ---
это дубликат. Получить список всех ярлыков из другого приложения
--- / редактировать редактировать ---
Я изо всех сил пытаюсь написать приложение, которое берет переднюю панель меню приложения (т. Е. Если Safari открыто, меню safari, если XCode открыт, меню Xcode) и анализирует ярлыки из него.
Вещи, которые я до сих пор пробовал, и потерпел неудачу с:
1: Потратил неделю на изучение appleScript. Поиграли с "Системными событиями", чтобы получить строку меню, однако я не могу найти там никакой информации, которая даст мне коды быстрого доступа.
2: Рассматривал попытку KVO, с NSWorkspace. Попытка получить NSRunningApplication, но есть только свойство ownsMenuBar, которое является BOOL, а не NSMenu.
3: попытался получить NSApplication от NSWorkspace, NSBundle и NSRunningApplication. Все безрезультатно.
4: Пытался получить NSMenu из appleScript (безуспешно.)
Я думаю, что следующее, что я хотел бы попробовать, это поиск приложения NSRunningApplication с YES для ownsMenuBar, а затем попытаться получить соответствующее приложение NSApplication откуда-нибудь. хотя пока не знаю, где.
Так какие-нибудь предложения??
1 ответ
Пытаться:
tell application "System Events"
set frontProcess to name of first process whose frontmost = true
tell process frontProcess
get every menu item of menu 1 of menu bar item 2 of menu bar 1
end tell
end tell
РЕДАКТИРОВАТЬ
Когда у вас есть этот список, вы можете анализировать атрибуты каждого пункта меню:
tell application "System Events"
set frontProcess to name of first process whose frontmost = true
tell process frontProcess
set myMenuItems to get every menu item of menu 1 of menu bar item 2 of menu bar 1
set myList to {}
repeat with aMenuItem in myMenuItems
set end of myList to aMenuItem's name
set end of myList to value of aMenuItem's attribute "AXMenuItemCmdChar"
set end of myList to value of aMenuItem's attribute "AXMenuItemCmdModifiers"
end repeat
end tell
end tell