如何查看我的应用程序在基于 Swift 的 macOS 应用程序中是否具有“输入监控”权限?这适用于 macOS Ventura+。
在 macOS 的早期版本中,我认为此权限与辅助权限捆绑在一起,我可以使用
AXIsProcessTrusted()
或 AXIsProcessTrustedWithOptions(options as CFDictionary?)
进行查询。如果我的应用程序在辅助功能菜单中启用(见下文),这仍然返回 true,但我无法具体看到输入监控状态。
是否有人知道会公开输入监控状态的 API,或用于确定是否已授予访问权限的任何其他技术?
IOHIDCheckAccess
来测试“输入监控”状态:
IOHIDCheckAccess(kIOHIDRequestTypeListenEvent)
这将返回以下内容之一
IOHIDAccessType
:
IOHIDAccessType(rawValue: 2) kIOHIDAccessTypeUnknown
IOHIDAccessType(rawValue: 1) kIOHIDAccessTypeDenied
IOHIDAccessType(rawValue: 0) kIOHIDAccessTypeGranted
请注意,还有...
IOHIDCheckAccess(kIOHIDRequestTypePostEvent)
与发布事件相关并显示在“辅助功能”权限中。它包括 Listen 类型,检查
...ListenEvent
将返回 ...Granted
,但授予时您的应用程序不会列在“输入监控”中。
因此,您必须首先检查 PostEvent,然后检查 ListenEvent 以了解您是否只有侦听访问权限。