ユーザーがホットキーを押すと、現在アクティブなアプリケーションのメニューバー項目を含むコンテキストメニューを表示するMac OSメニューの追加アプリケーションを作成しようとしています。コンテキストメニューの表示はうまくできますが、現在アクティブなアプリケーションのメニューバー項目を取得できないようです。現時点では、アクティブなアプリケーションの名前を取得するのに[[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
を使用していますが、NSRunningApplicationには貴重なその他の情報が含まれているようです。外部アプリケーションからアプリケーションメニューに関する情報を得る方法はありますか?Objective-C:外部アプリケーションからメニュー情報を取得する
UPDATE:あなたは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);
}
}
は、アプリケーションのメニューバーから使用できるメニューの一覧を出力します。あなたは、メニュー項目などをクリックしてシミュレートするAppleScriptを使用することができますhttp://robnapier.net/blog/scripting-bridge-265
**ありがとうございました!**私はあなたに+1以上のものを提供したいと思いますが、どうすればよいかわかりません。 '/ System/Library/CoreServices/System Events.app'をヘッダーにコンパイルすることは、おそらく私がXcodeでやったことの中で最も奇妙なことです。ショートカットや 'keyEquivalent'プロパティが' SystemEventsMenuItem'のどこに隠れているのか分かりませんか? – epologee