クライアント側プロバイダー アセンブリの登録
Note
このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、Windows Automation API の「UI オートメーション」を参照してください。
このトピックでは、クライアント側 UI オートメーション プロバイダーを格納する DLL を登録する方法を説明します。
例
次の例では、コンソール ウィンドウのプロバイダーを格納するアセンブリを登録する方法を示します。
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