我需要阅读 MAC OS 中最前面的应用程序的所有快捷方式。Cocoa,Objective-c中是否有提供此功能的API或类?
2 回答
8
Accessibility API 是您所需要的。不幸的是,它相当复杂,最好通读 UIElementInspector源代码以了解它是如何使用的,以及Mac 的 Accessibility Programming Guidelines中与辅助应用程序相关的部分。
您想要的将需要大量代码,因此我将概述这些步骤。
- 用于获取应用程序列表,并获取属性为
[[NSWorkspace sharedWorkspace] runningApplications]的应用程序。activeYES NSRunningApplication使用'processIdentifier属性获取该应用程序的 PID 。- 现在我们进入可访问性,通过应用程序服务API访问
- 使用 AXUIElement 创建一个表示活动应用程序的 AXUIElement
AXUIElementCreateApplication,它pid作为参数。 - 现在你有了一个
AXUIElementwithApplication角色,或AXApplication伪类。你会想要继续向下元素的层次结构AXApplication->AXMenuBar->AXMenuBarItem->AXMenuItem。请注意,AXMenuItems可以有其他AXMenuItems嵌套在它们之下。 - 要遍历层次结构,请使用
AXUIElementCopyAttributeValues获取 的值kAXChildrenAttribute。这将返回一个 children 数组AXUIElements。 - 最后,当您到达
AXMenuItem元素时,检查它们的菜单项 Cmd 字符、字形、修饰符和虚拟键属性以获取实际快捷方式。属性名称的常量,如,在此处kAXMenuItemCmdCharAttribute列出。
于 2012-07-29T06:08:55.113 回答
0
于 2012-07-29T06:19:52.630 回答