Bagikan melalui


Properti Automasi antarmuka pengguna penembolokan dan Pola Kontrol

Saat menggunakan Microsoft UI Automation, klien sering kali perlu mengambil beberapa properti untuk beberapa elemen otomatisasi. Klien dapat mengambil properti individual satu elemen sekaligus dengan menggunakan metode pengambilan properti seperti IUIAutomationElement::CurrentName atau CurrentAccessKey. Namun, metode ini lambat dan tidak efisien karena memerlukan panggilan lintas proses untuk setiap properti yang diambil. Untuk meningkatkan performa, klien dapat menggunakan kemampuan penembolokan (juga disebut pengambilan massal) dari Automasi UI. Penembolokan memungkinkan klien untuk mengambil semua properti yang diinginkan untuk semua elemen yang diinginkan dengan satu panggilan metode. Klien kemudian dapat mengambil properti individual dari cache sesuai kebutuhan, dan bisa mendapatkan rekam jepret baru cache secara berkala, umumnya sebagai respons terhadap peristiwa yang menandakan perubahan di UI.

Aplikasi dapat meminta penembolokan saat mengambil elemen Automation UI dengan menggunakan metode, seperti IUIAutomation::ElementFromPointBuildCache, IUIAutomationTreeWalker::GetFirstChildElementBuildCache, atau IUIAutomationElement::FindFirstBuildCache.

Penembolokan juga terjadi saat Anda menentukan permintaan cache saat berlangganan peristiwa. Elemen Automation UI diteruskan ke penanganan aktivitas Anda sebagai sumber peristiwa berisi properti yang di-cache dan pola kontrol yang ditentukan oleh permintaan cache. Setiap perubahan yang dilakukan pada permintaan cache setelah Anda berlangganan acara tidak berpengaruh.

Topik ini berisi bagian berikut.

Permintaan Cache

Penembolokan melibatkan penentuan properti mana yang akan diambil dan elemen mana yang akan diambil, lalu menggunakan informasi ini untuk membuat permintaan cache. Setiap kali klien mendapatkan antarmuka IUIAutomationElement untuk item UI, Automation UI menyimpan informasi yang ditentukan dalam permintaan cache.

Untuk membuat permintaan cache, mulailah dengan menggunakan metode IUIAutomation::CreateCacheRequest untuk mengambil penunjuk antarmuka IUIAutomationCacheRequest . Selanjutnya, konfigurasikan permintaan cache dengan menggunakan metode IUIAutomationCacheRequest.

Menentukan Properti dan Pola Kontrol ke Cache

Anda dapat menentukan properti untuk di-cache dengan memanggil IUIAutomationCacheRequest::AddProperty. Anda dapat menentukan pola kontrol ke cache dengan memanggil IUIAutomationCacheRequest::AddPattern. Ketika pola kontrol di-cache, propertinya tidak di-cache secara otomatis; Anda harus menentukan properti yang ingin Anda cache dengan menggunakan AddProperty.

Anda dapat mengambil properti pola kontrol (misalnya, properti Nilai dari pola kontrol Nilai ), tanpa harus mengambil seluruh pola kontrol ke dalam cache. Anda harus mengambil pola kontrol hanya jika Anda perlu menggunakan metode pola kontrol.

Menentukan Cakupan dan Pemfilteran Permintaan Penembolokan

Anda dapat menentukan elemen yang properti dan pola kontrolnya ingin Anda cache dengan mengatur properti IUIAutomationCacheRequest::TreeScope sebelum menggunakan permintaan. Cakupan relatif terhadap elemen yang diambil oleh metode di mana permintaan cache diteruskan. Misalnya, jika Anda hanya mengatur TreeScope_Children, lalu mengambil elemen Automation UI, properti dan pola kontrol turunan dari elemen tersebut di-cache, tetapi properti dan pola kontrol elemen itu sendiri tidak di-cache. Untuk memastikan bahwa penembolokan dilakukan untuk elemen yang diambil itu sendiri, Anda harus menyertakan TreeScope_Element di properti IUIAutomationCacheRequest::TreeScope . Tidak dimungkinkan untuk mengatur cakupan ke TreeScope_Parent atau TreeScope_Ancestors. Namun, elemen induk dapat di-cache saat elemen turunan di-cache; lihat Mengambil Turunan dan Induk yang Di-Cache dalam topik ini.

Jangkauan penembolokan juga dipengaruhi oleh properti IUIAutomationCacheRequest::TreeFilter . Secara default, penembolokan dilakukan hanya untuk elemen yang muncul dalam tampilan kontrol pohon UI Automation. Namun, Anda dapat mengubah properti ini untuk menerapkan penembolokan ke semua elemen, atau hanya ke elemen yang muncul dalam tampilan konten.

Kekuatan Referensi Elemen

Saat Anda mengambil elemen otomatisasi, secara default Anda memiliki akses ke semua properti dan pola kontrol elemen tersebut, termasuk properti dan pola kontrol yang tidak di-cache. Namun, Anda dapat menentukan bahwa referensi ke elemen hanya mengacu pada data yang di-cache, dengan mengatur properti IUIAutomationCacheRequest::AutomationElementMode ke AutomationElementMode_None. Dalam hal ini, Anda tidak memiliki akses ke properti yang tidak di-cache dan pola kontrol elemen yang diambil. Ini berarti Anda tidak dapat mengakses properti saat ini seperti IUIAutomationElement::CurrentIsEnabled atau mengambil pola kontrol dengan menggunakan IUIAutomationElement::GetCurrentPattern. Pada pola kontrol cache, Anda tidak dapat memanggil metode yang melakukan tindakan pada kontrol, seperti IUIAutomationInvokePattern::Invoke.

Contoh aplikasi yang mungkin tidak memerlukan referensi penuh ke objek adalah pembaca layar, yang mungkin mengambil properti nama dan jenis kontrol elemen di jendela tanpa memerlukan objek elemen otomatisasi itu sendiri.

Mengambil Cache Turunan dan Induk

Saat Anda mengambil elemen otomatisasi dan meminta penembolokan untuk anak-anak elemen tersebut melalui properti IUIAutomationCacheRequest::TreeScope dari permintaan, dimungkinkan untuk mendapatkan elemen anak dengan memanggil IUIAutomationElement::GetCachedChildren pada elemen yang Anda ambil.

Jika TreeScope_Element disertakan dalam cakupan permintaan cache, elemen akar permintaan dapat diambil dengan memanggil IUIAutomationElement::GetCachedParent pada salah satu elemen anak.

Catatan

Anda tidak dapat menyimpan cache induk atau ancestor dari elemen akar permintaan.

 

Mengambil Rekam Jepret Baru Cache

Cache hanya berlaku selama tidak ada yang berubah di UI. Aplikasi Anda bertanggung jawab untuk mengambil rekam jepret baru cache, biasanya, sebagai respons terhadap peristiwa.

Jika Anda berlangganan acara dengan permintaan cache, Anda mendapatkan rekam jepret baru IUIAutomationElement dari cache sebagai sumber peristiwa setiap kali penanganan aktivitas Anda dipanggil. Anda juga dapat mengambil rekam jepret baru informasi cache untuk elemen dengan memanggil IUIAutomationElement::BuildUpdatedCache. Anda dapat meneruskan IUIAutomationCacheRequest asli untuk mendapatkan rekam jepret baru dari semua informasi yang sebelumnya di-cache.

Mengambil rekam jepret baru cache tidak mengubah properti referensi IUIAutomationElement yang ada.

Contoh

Untuk contoh kode yang menunjukkan cara menggunakan kemampuan penembolokan Automation UI, lihat Cara Menggunakan Penembolokan.

Konseptual

Gambaran Umum Pola Kontrol Automasi UI

Mendapatkan Elemen Automasi Antarmuka Pengguna

Ringkasan Properti UI Automation