如何公开Server-Side UI 自动化提供程序
本主题包含演示如何公开自定义控件的服务器端 Microsoft UI 自动化提供程序的示例代码。
Microsoft UI 自动化将WM_GETOBJECT消息发送到提供程序应用程序,以检索有关提供程序支持的可访问对象的信息。 当客户端调用 IUIAutomation::ElementFromHandle、ElementFromPoint 和 GetFocusedElement 时,以及处理客户端已注册的事件时,UI 自动化发送WM_GETOBJECT。
当提供程序收到WM_GETOBJECT消息时,它应检查 lParam 参数是否等于 UiaRootObjectId。 如果是,提供程序应返回对象的 IRawElementProviderSimple 接口。 提供程序通过调用 UiaReturnRawElementProvider 函数返回接口。
以下示例演示如何响应 WM_GETOBJECT。
// Expose the custom button's server-side provider to UI Automation.
case WM_GETOBJECT:
{
// If lParam matches UiaRootObjectId, return IRawElementProviderSimple.
if (static_cast<long>(lParam) == static_cast<long>(UiaRootObjectId))
{
// Retrieve the pointer to the custom button object from the
// window data.
CustomButton* pControl = reinterpret_cast<CustomButton*>(
GetWindowLongPtr(hwnd, GWLP_USERDATA));
// Call an application-defined method to get the
// IRawElementProviderSimple pointer.
IRawElementProviderSimple* pRootProvider =
pControl->GetUIAutomationProvider(hwnd);
// Return the IRawElementProviderSimple pointer to UI Automation.
return UiaReturnRawElementProvider(hwnd, wParam, lParam,
pRootProvider);
}
return 0;
}
相关主题