Estoy tratando de escribir una aplicación adicional del menú Mac OS que muestra un menú contextual que contiene los elementos de la barra de menú de la aplicación actualmente activa, cuando el usuario presiona alguna tecla rápida. La visualización del menú contextual puedo hacerlo bien, pero parece que no puedo obtener los elementos de la barra de menú de la aplicación actualmente activa. En este momento estoy usando [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
para obtener el nombre de las aplicaciones activas, pero NSRunningApplication parece contener muy poca información. ¿Hay alguna forma de que pueda obtener información sobre los menús de la aplicación desde una aplicación externa?Objetivo-C: obtener información del menú de la aplicación externa
ACTUALIZACIÓN:
Utilizando el marco ScriptingBridge parece que funciona bastante bien, si usted es feliz con 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);
}
}
imprimirá una lista de menús disponibles en la barra de menú de la aplicación . no han encontrado una manera de obtener el menú contextual, así que no voy a llamar a este respondió por el momento ...
Esto era útil también: http://robnapier.net/blog/scripting-bridge-265
** ¡GRACIAS! ** Me encantaría darte más de un +1, pero no sabría cómo. Compilar '/ System/Library/CoreServices/System Events.app' en un encabezado es probablemente lo más extraño que he hecho con Xcode, pero bueno, ¡funciona! ¿Sabrías por casualidad dónde está escondido el acceso directo o la propiedad 'keyEquivalent' en un' SystemEventsMenuItem'? – epologee