AX API 备忘录
基本使用方法
AXUIElementCreateApplication(pid) → 获取应用 AX 元素
kAXWindowsAttribute → 获取窗口列表
kAXPositionAttribute / kAXSizeAttribute → 读写窗口位置
AXIsProcessTrusted() → 权限检测
分层架构
WindowOperator (protocol)
├── AXOperator: 真实 AX API 实现
└── MockOperator: 测试用,无需 AXUIElement
WindowService (high-level batch ops)
└── consumes WindowOperator
已知边缘情况
| 场景 |
处理方式 |
| AX API 返回 nil |
compactMap 过滤 |
| 权限未授权 |
PermissionGate.assertAuthorized() |
| setRect 失败 |
收集到 MoveReport,显示 ErrorBanner |
| 窗口被关闭 |
window(withId:) 返回 nil → 跳过 |
| 跨 Space 窗口 |
已按 spaceId 分组,按 Space 执行 |