Ich versuche, eine Mac OS Menü Extra-Anwendung zu schreiben, die ein Kontextmenü mit den Menüleisten-Elementen der gerade aktiven Anwendung anzeigt, wenn der Benutzer eine der Tasten drückt. Die Anzeige des Kontextmenüs kann ich gut machen, aber ich kann nicht scheinen, die Menüleiste der aktuell aktiven Anwendung zu erhalten. Im Moment benutze ich [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
, um den Namen der aktiven Anwendungen zu erhalten, aber NSRunningApplication scheint sehr wenig andere Informationen zu enthalten. Gibt es eine Möglichkeit, Informationen über Anwendungsmenüs von einer externen Anwendung zu erhalten?Objective-C: Holen Sie sich Menüinformationen aus der externen Anwendung
UPDATE:
Mit dem ScriptingBridge Rahmen scheint recht gut zu funktionieren, wenn Sie zufrieden sind mit 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);
}
}
wird eine Liste der verfügbaren Menüs aus der Anwendung der Menüleiste auszudrucken . Haben Sie nicht einen Weg, um das Kontextmenü zu finden, so dass ich dies nur noch nicht nennen beantwortet ...
Dies war nützlich zu: http://robnapier.net/blog/scripting-bridge-265
** DANKE! ** Ich würde Ihnen gerne mehr als ein +1 geben, aber ich würde nicht wissen, wie. Das Kompilieren von '/ System/Library/CoreServices/System Events.app' in eine Kopfzeile ist wahrscheinlich das Seltsamste, was ich jemals mit Xcode gemacht habe, aber hey, es funktioniert! Würdest du zufällig wissen, wo die Abkürzung oder 'keyEquivalent' -Eigenschaft in einem' SystemEventsMenuItem' versteckt ist? – epologee