1

- -編集 - -

Keycueこの機能を実行するというアプリケーションがあります。

- -/編集 - -

---編集編集---

これは重複しています。 別のアプリケーションからすべてのショートカットのリストを取得する

---/編集編集---

最前面のアプリケーションのメニューバー(Safariが開いている場合はsafariメニュー、XCodeが開いている場合はSafariメニュー、Xcodeメニュー)を取得し、そこからショートカットを解析するアプリケーションを作成するのに苦労しています。

私がこれまでに試したが失敗したこと:

1:アップルスクリプトを学ぶのに1週間を費やしました。メニューバーを取得するために「システムイベント」をいじくりまわしましたが、そこに収集できるショートカットコードを提供する情報はありません。

2:NSWorkspaceを使用してKVOを試みることを検討しました。NSRunningApplicationを取得しようとしましたが、ownsMenuBarプロパティのみがあります。これはBOOLであり、NSMenuではありません。

3:NSWorkspace、NSBundle、およびNSRunningApplicationからNSApplicationを取得しようとしました。すべて無駄に。

4:applescriptからNSMenuを取得しようとしました(成功しませんでした)。

次に試したいのは、ownsMenuBarに対してYESを指定してNSRunningApplicationを検索し、対応するNSApplicationをどこかから取得することです。まだどこにあるのかわかりません。

だから何か提案はありますか?

4

1 に答える 1

2

試す:

tell application "System Events"
    set frontProcess to name of first process whose frontmost = true
    tell process frontProcess
        get every menu item of menu 1 of menu bar item 2 of menu bar 1
    end tell
end tell

編集
このリストを取得したら、各メニュー項目の属性を解析できます。

tell application "System Events"
    set frontProcess to name of first process whose frontmost = true
    tell process frontProcess
        set myMenuItems to get every menu item of menu 1 of menu bar item 2 of menu bar 1
        set myList to {}
        repeat with aMenuItem in myMenuItems
            set end of myList to aMenuItem's name
            set end of myList to value of aMenuItem's attribute "AXMenuItemCmdChar"
            set end of myList to value of aMenuItem's attribute "AXMenuItemCmdModifiers"
        end repeat
    end tell
end tell
于 2013-01-17T20:16:00.630 に答える