2014-09-14
引用程序集
提供程序接口
公开服务器端 UI 自动化提供程序
从 UI 自动化提供程序返回属性
从 UI 自动化提供程序中引发事件
在 UI 自动化提供程序中支持控件模式
WinForm Sample
参考
引用程序集[1]
UI 自动化提供程序项目必须引用以下程序集:
- UIAutomationProviders.dll
- UIAutomationTypes.dll
- WindowsBase.dll
提供程序接口[1]
每个 UI 自动化提供程序必须实现下列接口之一。
|
接口 |
说明 |
|---|---|
|
提供窗口中承载的简单控件的功能,包括对控件模式和属性的支持。 |
|
|
为复杂控件中的元素添加功能,包括在片段中导航、设置焦点和返回元素的边框。 |
|
|
为复杂控件中的根元素添加功能,包括将子元素定位于指定坐标以及设置整个控件的焦点状态。 |
IRawElementProviderSimple的metadata见图1
图1 metadata - IRawElementProviderSimple
公开服务器端 UI 自动化提供程序[2]
重写窗口过程以捕获 WM_GETOBJECT,以响应客户端应用程序发送到控件窗口的 WM_GETOBJECT 消息时,返回实现 IRawElementProviderSimple(或派生接口)的对象。
1 /// <summary> 2 /// Handles WM_GETOBJECT message; others are passed to base handler. 3 /// </summary> 4 /// <param name="m">Windows message.</param> 5 /// <remarks> 6 /// This method enables UI Automation to find the control. 7 /// </remarks> 8 [PermissionSetAttribute(SecurityAction.Demand, Unrestricted = true)] 9 protected override void WndProc(ref Message m) 10 { 11 const int WM_GETOBJECT = 0x003D; 12 13 if ((m.Msg == WM_GETOBJECT) && (m.LParam.ToInt32() == AutomationInteropProvider.RootObjectId)) 14 { 15 m.Result = AutomationInteropProvider.ReturnRawElementProvider( 16 Handle, m.WParam, m.LParam, (IRawElementProviderSimple)this); 17 return; 18 } 19 base.WndProc(ref m); 20 }