Bagikan melalui


Penyimpanan Sementara Properti Automasi UI 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 fitur penyimpanan sementara (juga disebut pengambilan dalam jumlah besar) dari Automasi UI. Caching memungkinkan klien untuk memperoleh semua properti yang diinginkan dari setiap 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 caching saat mengambil elemen UI Automation dengan menggunakan metode seperti IUIAutomation::ElementFromPointBuildCache, IUIAutomationTreeWalker::GetFirstChildElementBuildCache, atau IUIAutomationElement::FindFirstBuildCache.

Penembolokan juga terjadi ketika Anda menentukan permintaan cache saat berlangganan acara. Elemen *UI Automation* diteruskan ke penangan peristiwa 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 tersebut tidak berpengaruh.

Topik ini berisi bagian berikut.

Permintaan Cache

Penembolokan melibatkan penentuan properti mana yang harus diambil serta dari elemen mana properti tersebut diambil, kemudian menggunakan informasi ini untuk membuat permintaan cache. Setiap kali klien mendapatkan antarmuka IUIAutomationElement untuk item UI, UI Automation 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 Pola Properti dan Kontrol ke Cache

Anda dapat menentukan properti ke cache dengan memanggil IUIAutomationCacheRequest::AddProperty. Anda dapat menentukan pola kontrol ke cache dengan memanggil IUIAutomationCacheRequest::AddPattern. Ketika pola kontrol di-cache, propertinya tidak secara otomatis di-cache; 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 Cache

Anda dapat menentukan elemen yang properti dan pola kontrolnya ingin Anda cache dengan mengatur properti IUIAutomationCacheRequest::TreeScope sebelum menggunakan permintaan. Cakupan berkaitan dengan elemen yang diambil oleh metode yang menerima permintaan cache. Misalnya, jika Anda hanya mengatur TreeScope_Children, dan kemudian mengambil elemen UI Automation, properti dan pola kontrol turunan elemen tersebut di-cache, tetapi properti dan pola kontrol dari elemen itu sendiri tidak di-cache. Untuk memastikan bahwa caching dilakukan untuk elemen yang diambil, Anda harus menyertakan TreeScope_Element di properti IUIAutomationCacheRequest::TreeScope. Tidak dimungkinkan untuk mengatur cakupan ke TreeScope_Parent atau TreeScope_Ancestors. Namun, elemen orang tua dapat di-cache ketika elemen anak di-cache; silakan lihat bagian Mengambil Elemen Anak dan Elemen Orang Tua yang Di-cache pada topik ini.

Tingkat caching juga dipengaruhi oleh properti IUIAutomationCacheRequest::TreeFilter. Secara default, caching dilakukan hanya untuk elemen yang muncul dalam tampilan kontrol di pohon UI Automation. Namun, Anda dapat mengubah properti ini untuk menerapkan caching ke semua elemen, atau hanya ke elemen yang tampil pada 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 Anak dan Orang Tua yang Di-cache

Saat Anda mengambil elemen otomatisasi dan meminta caching untuk elemen anak dari elemen tersebut melalui properti IUIAutomationCacheRequest::TreeScope permintaan, Anda dapat memperoleh 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 turunan.

Nota

Anda tidak dapat menyimpan induk atau leluhur dari elemen root permintaan.

 

Mengambil Cuplikan Baru Cache

Cache hanya berlaku selama tidak ada perubahan 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 IUIAutomationElement rekam jepret baru 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 asli IUIAutomationCacheRequest untuk mendapatkan rekam jepret baru dari semua informasi yang sebelumnya di-cache.

Mengambil cuplikan baru dari cache tidak mengubah properti referensi IUIAutomationElement yang ada.

Contoh

Untuk contoh kode yang menunjukkan cara menggunakan kemampuan penyimpanan sementara pada UI Automation, lihat Cara Menggunakan Penyimpanan Sementara.

Konseptual

Gambaran Umum Pola Kontrol Automasi UI

Mendapatkan Elemen UI Automation

Gambaran Umum Properti Automasi UI