ck125s:
各位 V 友,最近在用 UI Automation (UIA) 时遇到了一个很奇怪的问题,卡了好几天了。
若方法有效感谢🙏200RMB
目标: 获取记事本( Notepad )编辑框的 TextPattern 。
现象:
我用 Accessibility Insights for Windows 去看,明明确确显示记事本的编辑框是支持 TextPattern 的。

问题:
我自己的代码,无论用哪种方式,都检测不到 TextPattern 。
我试过的两种方法:
C++ 原生 COM 接口:
通过 GetFocusedElement 拿到元素,然后 GetCurrentPattern(TextPattern.Pattern),结果是拿不到。
C# + Axe.Windows (Accessibility Insights 核心库):
我以为是我的姿势不对,[找到源码]( GitHub - microsoft/accessibility-insights-windows: Accessibility Insights for Windows),引用 Axe.Windows 库,完全模拟 AI 的工作流程,调用 PopulateAllPropertiesWithLiveData() 等方法,结果依然检测不到 TextPattern 。
已排除的常规问题:
UIAccess 权限、COM 线程模型( STA )、元素句柄有效性等都检查过了,没问题。其他 Pattern 比如 ValuePattern 是可以正常获取的。
核心疑问:
Accessibility Insights 到底用了什么魔法?
为什么它能看到 TextPattern ,而我直接调用 UIA API 或者用它的核心库都复现不了?是不是需要什么特殊的初始化步骤,或者 Windows 对记事本这个“亲儿子”有什么特殊的处理?
有大佬了解其中机制吗?或者有其他调试思路也行。
如果能提供解决方案或关键思路,可有偿指导,感谢!
微信:Delightpl