Freigeben über


Registrieren einer clientseitigen Anbieterassembly

Hinweis

Diese Dokumentation ist für .NET Framework-Entwickler konzipiert, die die verwalteten Klassen zur Automatisierung der Benutzeroberfläche verwenden möchten, die im Namespace System.Windows.Automation definiert sind. Aktuelle Informationen zur Automatisierung der Benutzeroberfläche finden Sie auf der Seite zur Windows-Automatisierungs-API: Benutzeroberflächenautomatisierung.

In diesem Thema wird gezeigt, wie Sie eine DLL registrieren, die clientseitige Benutzeroberflächenautomatisierungs-Anbieter enthält.

Beispiel

Im folgenden Beispiel wird gezeigt, wie eine Assembly registriert wird, die einen Anbieter für ein Konsolenfenster enthält.

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

Siehe auch