Macos x应用程序的快捷方式

Tog*_*ogo 4 macos xcode cocoa objective-c

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

Yun*_*chi 8

Accessibility API就是您所需要的.不幸的是,它相当复杂,最好通过UIElementInspector 源代码来阅读它的使用方法,以及与Mac可访问性编程指南中的辅助应用程序相关的部分.

你想要的是需要一些代码,所以我将概述步骤.

  1. 使用[[NSWorkspace sharedWorkspace] runningApplications]获得的应用程序的列表,并获得其应用active属性为YES.
  2. 获得使用该应用程序的PID NSRunningApplicationprocessIdentifier属性.
  3. 现在我们进入Accessibility,通过Application Services API 访问
  4. 创建一个表示活动Application using的AXUIElement AXUIElementCreateApplication,它pid作为参数.
  5. 现在你有一个AXUIElementApplication角色,或者AXApplication伪类.你需要继续进行元素层次结构AXApplication- > AXMenuBar- > AXMenuBarItem- > AXMenuItem.请注意,AXMenuItems可以AXMenuItems在其下嵌套其他.
  6. 要遍历层次结构,请使用AXUIElementCopyAttributeValues以获取值kAXChildrenAttribute.这将返回一系列子项AXUIElements.
  7. 最后,当您到达AXMenuItem元素时,检查实际快捷方式的菜单项Cmd Char,Glyph,Modifiers和Virtual Key属性.此处kAXMenuItemCmdCharAttribute列出了属性名称的常量.