如何从UI 自动化提供程序引发事件

本主题包含的示例代码演示 Microsoft UI 自动化 提供程序如何引发事件。

下面的示例代码演示了应用程序中实现自定义按钮的方法。 每当调用自定义按钮时,应用程序就会调用 方法。 方法检查是否有任何客户端正在侦听事件,如果正在侦听事件,则引发 UIA_Invoke_InvokedEventId 事件以通知客户端按钮已调用。

// Responds to a button click. The source of the click could 
// be the mouse, the keyboard, or a client's call to 
// IUIAutomationInvokePattern::Invoke.
void CustomButton::InvokeButton(HWND hwnd)
{
    // TODO: Perform program actions invoked by the control.

    // Check whether any clients are listening for UI Automation 
    // events.
    if (UiaClientsAreListening())
    {
        // Raise an Invoked event. GetUIAutomationProvider is an
        // application-defined method that returns a pointer to
        // the application's IRawElementProviderSimple interface.
        UiaRaiseAutomationEvent(
            GetUIAutomationProvider(hwnd), UIA_Invoke_InvokedEventId); 
    }
}

概念性

UI 自动化事件概述

UI 自动化提供程序的帮助主题