Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Register a Client-Side Provider Assembly

Note

This documentation is intended for .NET Framework developers who want to use the managed UI Automation classes defined in the System.Windows.Automation namespace. For the latest information about UI Automation, see Windows Automation API: UI Automation.

This topic shows how to register a DLL that contains client-side UI Automation providers.

Example

The following example shows how to register an assembly that contains a provider for a console window.

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

See also

Additional resources