共用方式為


註冊用戶端提供者組件

注意事項注意事項

這份文件適用於想要使用 System.Windows.Automation 命名空間中定義之 Managed UI Automation 類別的 .NET Framework 開發人員。如需 UI Automation 的最新資訊,請參閱 Windows Automation API:使用者介面自動化 (英文)。

本主題說明如何註冊內含用戶端 UI 自動化提供者的 DLL。

範例

下面的範例顯示如何註冊內含主控台視窗提供者的組件。


Imports System
Imports System.Windows.Automation
Imports System.Reflection
Imports System.Runtime.InteropServices ' for DllImport
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
using System;
using System.Windows.Automation;
using System.Reflection;
using System.Runtime.InteropServices;    // for DllImport
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();
        }
    }
}

請參閱

工作

建立用戶端 UI 自動化提供者