Macos x 应用程序的快捷方式



我需要读取MAC OS中最前面的应用程序的所有快捷方式。Cocoa,Objective-c中是否有提供此的API或类?

辅助功能 API 正是您所需要的。不幸的是,它相当复杂,最好通读 UIElementInspector 源代码以了解它的使用方式,以及 Mac 辅助功能编程指南中与辅助应用程序相关的部分。

你想要的需要很多代码,所以我将概述这些步骤。

  1. 使用 [[NSWorkspace sharedWorkspace] runningApplications] 获取应用程序列表并获取其active属性为 YES 的应用程序。
  2. 使用 NSRunningApplicationprocessIdentifier 属性获取该应用程序的 PID。
  3. 现在,我们转到辅助功能,通过应用程序服务 API 访问
  4. 使用 AXUIElementCreateApplication 创建一个表示活动应用程序的 AXUIElement,它将pid作为参数。
  5. 现在,您有一个具有Application角色或伪类AXApplication AXUIElement。您需要沿着元素的层次结构向下AXApplication -> AXMenuBar -> AXMenuBarItem -> AXMenuItem 。请注意,AXMenuItems可以在其下嵌套其他AXMenuItems
  6. 若要遍历层次结构,请使用 AXUIElementCopyAttributeValues 获取 kAXChildrenAttribute 的值。这将返回一个子数组AXUIElements
  7. 最后,当您找到AXMenuItem元素时,请检查其菜单项 Cmd 字符、字形、修饰符和虚拟键属性以获取实际快捷方式。此处列出了属性名称的常量,如 kAXMenuItemCmdCharAttribute

不想竞争@woody :)

但我发现了这个,它也可能有所帮助:

用户界面浏览器

最新更新