Partilhar via


Registrar um assembly de provedor do lado do cliente

Nota

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de automação da interface do usuário gerenciadas definidas no System.Windows.Automation namespace. Para obter as informações mais recentes sobre a automação da interface do usuário, consulte API de automação do Windows: automação da interface do usuário.

Este tópico mostra como registrar uma DLL que contém provedores de automação da interface do usuário do lado do cliente.

Exemplo

O exemplo a seguir mostra como registrar um assembly que contém um provedor para uma janela de console.

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

namespace CSClient
{
    class CSClientProgram
    {
        [DllImport("kernel32.dll")]
        static extern IntPtr GetConsoleWindow();

        static void Main(string[] args)
        {
            // TODO  Change the path to the appropriate one for your CSProviderDLL.
            string fileloc = @"C:\SampleDependencies\CSProviderDLL.dll";
            Assembly a = null;
            try
            {
                a = Assembly.LoadFile(fileloc);
            }
            catch (FileNotFoundException e1)
            {
                Console.WriteLine(e1.Message);
            }
            if (a != null)
            {
                try
                {
                    ClientSettings.RegisterClientSideProviderAssembly(a.GetName());
                }
                catch (ProxyAssemblyNotLoadedException e)
                {
                    Console.WriteLine(e.Message);
                }

                IntPtr hwnd = GetConsoleWindow();

                // Get an AutomationElement that represents the window.
                AutomationElement elementWindow = AutomationElement.FromHandle(hwnd);
                Console.WriteLine("Found UI Automation client-side provider for:");

                // The name property is furnished by the client-side provider.
                Console.WriteLine(elementWindow.Current.Name);
                Console.WriteLine();
            }
            Console.WriteLine("Press any key to exit.");
            Console.ReadLine();
        }
    }
}

Imports System.Windows.Automation
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports System.IO


Namespace CSClient
    Friend Class CSClientProgram
        <DllImport("kernel32.dll")>
        Shared Function GetConsoleWindow() As IntPtr
        End Function

        Shared Sub Main(ByVal args() As String)
            ' TODO  Change the path to the appropriate one for your CSProviderDLL.
            Dim fileloc As String = "C:\SampleDependencies\CSProviderDLL.dll"
            Dim a As System.Reflection.Assembly = Nothing
            Try
                a = System.Reflection.Assembly.LoadFile(fileloc)
            Catch e1 As FileNotFoundException
                Console.WriteLine(e1.Message)

            End Try
            If a IsNot Nothing Then
                Try
                    ClientSettings.RegisterClientSideProviderAssembly(a.GetName())
                Catch e As ProxyAssemblyNotLoadedException
                    Console.WriteLine(e.Message)
                End Try

                Dim hwnd As IntPtr = GetConsoleWindow()

                ' Get an AutomationElement that represents the window. 
                Dim elementWindow As AutomationElement = AutomationElement.FromHandle(hwnd)
                Console.WriteLine("Found UI Automation client-side provider for:")

                ' The name property is furnished by the client-side provider.
                Console.WriteLine(elementWindow.Current.Name)
                Console.WriteLine()
            End If
            Console.WriteLine("Press any key to exit.")
            Console.ReadLine()
        End Sub
    End Class
End Namespace

Consulte também