Sto provando a scrivere un'applicazione extra del menu Mac OS che visualizza un menu contestuale contenente le voci della barra dei menu dell'applicazione correntemente attiva, quando l'utente preme alcuni tasti di scelta rapida. La visualizzazione del menu contestuale I può fare bene, ma non riesco a ottenere gli elementi della barra dei menu dell'applicazione correntemente attiva. Al momento sto usando [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
per ottenere il nome delle applicazioni attive, ma NSRunningApplication sembra contenere preziose altre informazioni. C'è un modo per ottenere informazioni sui menu delle applicazioni da un'applicazione esterna?Objective-C: recupera le informazioni del menu dall'applicazione esterna
UPDATE:
Utilizzando il quadro ScriptingBridge sembra funzionare abbastanza bene, se sei felice 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);
}
}
stamperà un elenco di menu disponibili dalla barra menu dell'applicazione . Non hanno trovato un modo per ottenere il menu contestuale, quindi non mi chiamare questo ha risposto appena ancora ...
Questo è stato utile anche: http://robnapier.net/blog/scripting-bridge-265
** GRAZIE! ** Mi piacerebbe darti più di un +1, ma non saprei come. Compilare '/ System/Library/CoreServices/System Events.app' in un header è probabilmente la cosa più strana che abbia mai fatto con Xcode ma hey, funziona! Sapresti dove la scorciatoia o la proprietà 'keyEquivalent' è nascosta in un' SystemEventsMenuItem'? – epologee