Bagikan melalui


Properti Automasi UI untuk Klien

Nota

Dokumentasi ini ditujukan untuk pengembang .NET Framework yang ingin menggunakan kelas Automation UI terkelola yang ditentukan dalam namespace System.Windows.Automation. Untuk informasi terbaru tentang Automasi UI, lihat Windows Automation API: UI Automation.

Gambaran umum ini memperkenalkan Anda kepada properti UI Automation sebagaimana diekspos kepada aplikasi klien UI Automation.

Properti pada AutomationElement objek berisi informasi tentang elemen antarmuka pengguna (UI), biasanya kontrol. Properti dari AutomationElement bersifat generik; artinya tidak spesifik untuk jenis kontrol tertentu. Banyak dari properti ini ditampilkan dalam struktur AutomationElement.AutomationElementInformation.

Pola kontrol juga memiliki properti. Properti dari pola kontrol bersifat spesifik untuk pola tersebut. Misalnya, ScrollPattern memiliki properti yang memungkinkan aplikasi klien untuk menemukan apakah jendela dapat digulir secara vertikal atau horizontal, dan berapa ukuran tampilan saat ini dan posisi gulir. Pola kontrol mengekspos semua propertinya melalui struktur; misalnya, ScrollPattern.ScrollPatternInformation.

Properti Automasi UI hanya dapat dibaca. Untuk mengatur properti kontrol, Anda harus menggunakan metode pola kontrol yang sesuai. Misalnya, gunakan Scroll untuk mengubah nilai posisi jendela gulir.

Untuk meningkatkan performa, nilai properti kontrol dan pola kontrol dapat di-cache saat AutomationElement objek diambil. Untuk informasi selengkapnya, lihat Caching dalam Automasi UI Klien.

ID Properti

Pengidentifikasi properti (ID) adalah nilai konstanta unik yang dienkapsulasi dalam AutomationProperty objek. Aplikasi klien Automation UI mendapatkan ID ini dari AutomationElement kelas atau dari kelas pola kontrol yang sesuai, seperti ScrollPattern. Penyedia Automation UI mendapatkannya dari AutomationElementIdentifiers atau dari salah satu kelas pengidentifikasi pola kontrol, seperti ScrollPatternIdentifiers.

Numerik Id dari AutomationProperty digunakan oleh penyedia untuk mengidentifikasi properti yang sedang ditanyakan dalam metode IRawElementProviderSimple.GetPropertyValue. Secara umum, aplikasi klien tidak perlu memeriksa Id. hanya ProgrammaticName digunakan untuk tujuan penelusuran kesalahan dan diagnostik.

Kondisi Properti

ID properti digunakan dalam membuat PropertyCondition objek yang digunakan untuk menemukan AutomationElement objek. Misalnya, Anda mungkin ingin menemukan yang AutomationElement memiliki nama tertentu, atau semua kontrol yang diaktifkan. Masing-masing PropertyCondition menentukan AutomationProperty pengidentifikasi dan nilai yang harus cocok dengan properti.

Untuk informasi selengkapnya, lihat topik referensi berikut ini:

Mengakses Properti

Beberapa properti dari AutomationElement dan semua properti dari kelas pola kontrol diekspos sebagai properti berlapis dari properti Current atau Cached dari objek AutomationElement atau objek pola kontrol.

Selain itu, properti pola kontrol AutomationElement atau properti lainnya, termasuk properti yang tidak tersedia dalam struktur Cached atau Current, dapat diambil dengan menggunakan salah satu metode berikut:

Metode ini menawarkan performa yang sedikit lebih baik serta akses ke berbagai properti.

Contoh kode berikut menunjukkan dua cara mengambil properti pada AutomationElement.

// elementList is an AutomationElement.

// The following two calls are equivalent.
string name = elementList.Current.Name;
name = elementList.GetCurrentPropertyValue(AutomationElement.NameProperty) as string;
' elementList is an AutomationElement.
' The following two calls are equivalent.
Dim name As String = elementList.Current.Name
name = CStr(elementList.GetCurrentPropertyValue(AutomationElement.NameProperty))

Untuk mengambil properti pola kontrol yang didukung oleh AutomationElement, Anda tidak perlu mengambil objek pola kontrol. Cukup berikan salah satu pengidentifikasi properti pola ke metode .

Contoh kode berikut menunjukkan dua cara mengambil properti pada pola kontrol.

// elementList is an AutomationElement representing a list box.
// Error-checking is omitted. Assume that elementList is known to support SelectionPattern.

SelectionPattern selectPattern =
    elementList.GetCurrentPattern(SelectionPattern.Pattern) as SelectionPattern;
bool isMultipleSelect = selectPattern.Current.CanSelectMultiple;

// The following call is equivalent to the one above.
isMultipleSelect = (bool)
    elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty);
' elementList is an AutomationElement representing a list box.
' Error-checking is omitted. Assume that elementList is known to support SelectionPattern.
Dim selectPattern As SelectionPattern = _
    DirectCast(elementList.GetCurrentPattern(SelectionPattern.Pattern), SelectionPattern)
Dim isMultipleSelect As Boolean = selectPattern.Current.CanSelectMultiple

' The following call is equivalent to the one above.
isMultipleSelect = CBool(elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty))

Metode Get mengembalikan Object. Aplikasi harus mentransmisikan objek yang dikembalikan ke jenis yang tepat sebelum menggunakan nilai .

Nilai Parameter Standar

Jika penyedia Automation UI tidak menerapkan properti, sistem Automation UI dapat menyediakan nilai default. Misalnya, jika penyedia untuk kontrol tidak mendukung properti yang diidentifikasi oleh HelpTextProperty, Automation UI mengembalikan string kosong. Demikian pula, jika penyedia tidak mendukung properti yang diidentifikasi oleh IsDockPatternAvailableProperty, Automation UI mengembalikan false.

Anda dapat mengubah perilaku ini dengan menggunakan AutomationElement.GetCachedPropertyValue dan AutomationElement.GetCurrentPropertyValue overload metode. Saat Anda menentukan true sebagai parameter kedua, Automasi UI tidak mengembalikan nilai default, tetapi sebaliknya mengembalikan nilai NotSupportedkhusus .

Contoh kode berikut mencoba mengambil properti dari elemen, dan jika properti tidak didukung, nilai yang ditentukan aplikasi digunakan sebagai gantinya.

// elementList is an AutomationElement.
object help = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, true);
if (help == AutomationElement.NotSupported)
{
    help = "No help available";
}
string helpText = (string)help;
' elementList is an AutomationElement.
Dim help As Object = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, True)
If help Is AutomationElement.NotSupported Then
    help = "No help available"
End If
Dim helpText As String = CStr(help)

Untuk menemukan properti apa yang didukung oleh elemen, gunakan GetSupportedProperties. Array pengidentifikasi AutomationProperty ini dikembalikan.

Peristiwa Perubahan Properti

Saat nilai properti pada AutomationElement atau pola kontrol berubah, peristiwa akan diluncurkan. Aplikasi dapat berlangganan peristiwa tersebut dengan memanggil AddAutomationPropertyChangedEventHandler, menyediakan array AutomationProperty pengidentifikasi sebagai parameter terakhir untuk menentukan properti yang menarik.

Di AutomationPropertyChangedEventHandler, Anda dapat mengidentifikasi properti yang telah berubah dengan memeriksa elemen Property dari argumen peristiwa. Argumen juga berisi nilai lama dan baru properti Automation UI yang telah berubah. Nilai-nilai ini berjenis Object dan harus dilemparkan ke jenis yang benar sebelum digunakan.

Properti Tambahan AutomationElement

Selain struktur properti Current dan Cached, AutomationElement memiliki properti berikut yang dapat diakses melalui aksesor properti sederhana.

Harta benda Deskripsi
CachedChildren Kumpulan objek turunan AutomationElement yang ada di dalam cache.
CachedParent Objek AutomationElement induk yang ada di cache.
FocusedElement (Properti statis) AutomationElement yang memiliki fokus input.
RootElement (Properti statis) Akar dari AutomationElement.

Lihat juga