7

ユーザーがホットキーを押したときに、現在アクティブなアプリケーションのメニュー バー項目を含むコンテキスト メニューを表示する 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

4

1 に答える 1

0

AppleScriptを使用して、ここに示すようなメニュー項目のクリックをシミュレートできますが、すべてのメニュー項目の名前を動的に取得できるかどうかはわかりません。その方法を使用するには、アプリに名前をハードコードする必要があります。

于 2012-07-16T16:36:48.077 に答える