Я пытаюсь написать дополнительное приложение меню Mac OS, которое отображает контекстное меню, содержащее элементы строки меню текущего активного приложения, когда пользователь нажимает какую-либо горячую клавишу. Отображение контекстного меню я могу сделать нормально, но я не могу получить элементы строки меню активного в данный момент приложения. На данный момент я использую [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
для получения имени активного приложения, но NSRunningApplication, похоже, содержит очень мало другой информации. Есть ли способ получить информацию о меню приложения из внешнего приложения?
ОБНОВЛЕНИЕ:
Использование структуры ScriptingBridge кажется работает довольно хорошо, если вы довольны использованием AppleScript:
SystemEventsApplication* sevApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.systemevents"];
SystemEventsProcess* proc = [[sevApp applicationProcesses] objectWithName:appName];
for (SystemEventsMenuBar* menuBar in proc.menuBars) {
for (SystemEventsMenuBarItem* menuBaritem in menuBar.menuBarItems) {
NSLog(@"%@", menuBaritem.name);
}
}
распечатает список меню, доступных в строке меню приложения. Не нашел способ получить контекстное меню, поэтому пока не буду называть это ответом...
Это тоже было полезно: http://robnapier.net/blog/scripting-bridge-265
/System/Library/CoreServices/System Events.app
в заголовок, вероятно, самая странная вещь, которую я когда-либо делал с Xcode, но, эй, это работает! Вы случайно не знаете, где скрыт ярлык или свойствоkeyEquivalent
вSystemEventsMenuItem
? - person epologee   schedule 04.09.2012