edit | blame | history | raw

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 执行