我正试图编写一个Mac OS菜单的额外应用程序,该应用程序显示包含当前活动应用程序的菜单栏项目的上下文菜单,当用户按下某个热键时。上下文菜单的显示我可以做得很好,但我似乎无法获得当前活动的应用程序的菜单栏项目。目前我使用[[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
得到有效应用的名字,但NSRunningApplication似乎包含了珍贵的小的其他信息。有什么方法可以从外部应用程序获取有关应用程序菜单的信息吗?Objective-C:从外部应用程序获取菜单信息
UPDATE:
使用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
**谢谢!**我想给你多一个+1,但我不知道如何。将'/ System/Library/CoreServices/System Events.app'编译成头文件可能是我用Xcode做过的最奇怪的事情,但是嘿,它可行!你会碰巧知道快捷方式或'keyEquivalent'属性隐藏在'SystemEventsMenuItem'中吗? – epologee 2012-09-03 22:30:12