与AXUIElement对应的C类名称?
Apple's Accessibility Inspector工具显示与当前检查的UI元素相对应的Objective-C类。 请参阅此屏幕截图底部的NSButtonCell
:
但是,如何在自己的代码中提取这些信息? 苹果七年前的UIElementInspector
示例代码中的可访问性方法不会显示元素的类名。
对辅助功能检查器进行逆向工程暗示可以通过AXClassName
属性获取Objective-C类名称,但该属性始终为零。
AppKit将对AXClassName
属性和其他几个属性的访问权限限制为具有com.apple.private.accessibility.inspection
权利的应用程序。 Accessibility Inspector用来访问辅助功能信息的XPC服务具有此权利。 由于这是一项私人权利,我相信它只能添加到由Apple证书签署的应用程序中。
您可以自己确认权限是关键,通过从可访问性检查器的XPC服务中剥离权限(如先进行辅助性检查器的备份!):
codesign -f -s - /Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app/Contents/Frameworks/AccessibilityAuditDeviceManager.framework/XPCServices/axAuditService.xpc
如果您打开Accessibility Inspector,则会看到大多数功能都能正常工作,除了诸如在专用权利上进行门控的类名之类的功能。