Implement UI Automation Providers in a Client Application

Este tópico contém código de exemplo que mostra como implementar um do lado do cliente Interface do usuário de automação do provedor Dentro de um aplicativo.

This is an uncommon scenario.Na maioria das vezes, um Cliente de Automação interface do usuário Aplicativo usa provedores do lado do servidor, ou provedores do lado do cliente que residem em uma DLL.

Exemplo

The following example code implements a simple provider for a console window.O código não tem nenhuma funcionalidade útil, porém destina para demonstrar o Basic as etapas no configurando um provedor em código do cliente e registrando-lo usando RegisterClientSideProviders.

 System;
 System.Windows.Automation;
 System.Windows.Automation.Provider;
 System.Reflection;
 System.Runtime.InteropServices;    
 System.IO;


 CSClientProviderImplementation
{
     CSClientSideImplementationProgram
    {
        [DllImport()]
          IntPtr GetConsoleWindow();


          Main(string[] args)
        {

            ClientSettings.RegisterClientSideProviders(
                UIAutomationClientSideProviders.ClientSideProviderDescriptionTable);

            IntPtr hwnd = GetConsoleWindow();

            
            AutomationElement elementWindow = AutomationElement.FromHandle(hwnd);
            Console.WriteLine();

            
            Console.WriteLine(elementWindow.Current.Name);
            Console.WriteLine();

            Console.WriteLine();
            Console.ReadLine();
        }
    }  


     UIAutomationClientSideProviders
    {
        
        
        
        
          ClientSideProviderDescription[] ClientSideProviderDescriptionTable = 
            {  ClientSideProviderDescription(
                
                WindowProvider.Create,    
                
                ) };  
    }

     WindowProvider : IRawElementProviderSimple
    {
        IntPtr providerHwnd;

         WindowProvider(IntPtr hwnd)
        {
            providerHwnd = hwnd;
        }

          IRawElementProviderSimple Create(
            IntPtr hwnd,  idChild,  idObject)
        {
             Create(hwnd, idChild);
        }

          IRawElementProviderSimple Create(
            IntPtr hwnd,  idChild)
        {
            
             (idChild != 0)  ;
               WindowProvider(hwnd);
        }

        #region IRawElementProviderSimple

        
        
        

        ProviderOptions IRawElementProviderSimple.ProviderOptions
        {
            
            {
                 ProviderOptions.ClientSideProvider;
            }
        }

        IRawElementProviderSimple IRawElementProviderSimple.HostRawElementProvider
        {
            
            {
                 AutomationInteropProvider.HostProviderFromHandle(providerHwnd);
            }
        }

        object IRawElementProviderSimple.GetPropertyValue( aid)
        {
             (AutomationProperty.LookupById(aid) ==
                AutomationElementIdentifiers.NameProperty)
            {
                 ;
            }
            
            {
                 ;
            }

        }

        object IRawElementProviderSimple.GetPatternProvider( iid)
        {
             ;
        }
        #endregion IRawElementProviderSimple
    }
}

Consulte também

Tarefas

Register a Client-Side Provider Assembly

Criar um Provedor de Automação de Interface de Usuário do Lado do Cliente

Conceitos

UI Automation Providers Overview

Implementação de Provedor de Automação de Interface de Usuário do Lado do Cliente