ユーザーがホットキーを押したときに、現在アクティブなアプリケーションのメニュー バー項目を含むコンテキスト メニューを表示する Mac OS メニュー エクストラ アプリケーションを作成しようとしています。コンテキスト メニューの表示は問題なく実行できますが、現在アクティブなアプリケーションのメニュー バー項目を取得できないようです。現時点では[[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
、アクティブなアプリケーションの名前を取得するために使用していますが、NSRunningApplication には他の貴重な情報がほとんど含まれていないようです。外部アプリケーションからアプリケーション メニューに関する情報を取得する方法はありますか?
アップデート:
AppleScript の使用に満足している場合は、 ScriptingBridgeフレームワークを使用するとかなりうまくいくようです。
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