擴充 UIA 控制模式(展開 / 選取 / 範圍 / 捲動)

無障礙後端原本只提供四種控制模式——Value、Invoke、Toggle 與唯讀的 Grid dump。這使得自動化 最常遇到的控制項無法以其*原生*模式驅動:樹節點無法展開、清單 / 下拉項目無法選取 (SelectionItemPattern)、滑桿無法設定(RangeValuePattern)、控制項無法捲入視野 (ScrollItemPattern)——這些只能退回脆弱的像素猜測。control_patterns 在既有的無障礙後端 ABC 之上補上這些物件層級動作。

每個函式都是對可注入的 accessibility.backends.get_backend() 接縫的薄分派(與無障礙模組 其餘部分相同的接縫),因此無頭核心可在任何平台透過注入 fake backend 單元測試;真正的 UI Automation 呼叫位於 Windows 後端(ExpandCollapse / SelectionItem / RangeValue / ScrollItem 模式)。未實作某模式的後端會拋出 AccessibilityNotAvailableError。不匯入 PySide6

無頭 API

from je_auto_control import (expand_control, collapse_control,
                             control_expand_state, select_control_item,
                             control_range, set_control_range,
                             scroll_control_into_view)

expand_control(name="Documents", role="treeitem")     # 展開樹節點
select_control_item(name="Option B")                  # 選取清單/下拉項目
set_control_range(75, name="Volume")                  # 設定滑桿
print(control_range(name="Volume"))   # {"value": 75.0, "minimum": 0, "maximum": 100}
scroll_control_into_view(name="Row 200")              # 把某列帶上螢幕

全部以 name / role / app_name / automation_id 定位控制項(與既有 control_invoke / control_toggle 相同)。展開/選取/捲動/設定動作回傳 bool; control_expand_state 回傳 expanded / collapsed / partial / leaf``(或 ``None);``control_range`` 回傳 {value, minimum, maximum}``(或 ``None)。

執行器指令

AC_expand_control / AC_collapse_control / AC_control_expand_state / AC_select_control_item / AC_control_range / AC_set_control_range / AC_scroll_control_into_view。皆以對應的 ac_* MCP 工具(動作類為破壞性、讀取類為唯讀) 及 Script Builder 指令(位於 Native UI 分類下)形式提供。