1

- -编辑 - -

有一个称为Keycue执行此功能的应用程序。

- -/编辑 - -

---编辑编辑---

这是重复的。 从另一个应用程序获取所有快捷方式的列表

---/编辑编辑---

我正在努力编写一个应用程序,它采用最前面的应用程序的菜单栏(即如果 Safari 是打开的,Safari 菜单,如果 XCode 是打开的,Xcode 菜单),并从中解析快捷方式。

到目前为止我尝试过的事情,但失败了:

1:花了一周时间学习applescript。玩弄“系统事件”以获取菜单栏,但是我无法收集到任何信息可以给我快捷方式代码。

2:考虑尝试使用 NSWorkspace 的 KVO。试图获取 NSRunningApplication,但只有一个 ownsMenuBar 属性,它是一个 BOOL,而不是一个 NSMenu。

3:试图从 NSWorkspace、NSBundle 和 NSRunningApplication 获取 NSApplication。一切都无济于事。

4:试图从applescript获取NSMenu(没有成功。)

我想我想尝试的下一件事是搜索 NSRunningApplication 并为 ownsMenuBar 选择 YES,然后尝试从某个地方获取相应的 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 回答