如何公開Server-Side 消費者介面自動化提供者
本主題包含範例程式碼,示範如何公開自訂控制項的伺服器端 Microsoft 消費者介面自動化提供者。
Microsoft 消費者介面自動化傳送WM_GETOBJECT訊息給提供者應用程式,以擷取提供者所支援之可存取物件的相關資訊。 當用戶端呼叫IUIAutomation::ElementFromHandle、ElementFromPoint和GetFocusedElement時,以及處理用戶端已註冊的事件時,消費者介面自動化會傳送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;
}
相關主題