UI Otomasyonu ve Etkin Erişilebilirlik
Microsoft Etkin Erişilebilirlik, Windows 95'te kullanıma sunulan ve Windows uygulamalarını erişilebilir hale getirmek için tasarlanmış eski API'dir. Microsoft UI Otomasyonu, Windows için yeni erişilebilirlik modelidir ve yardımcı teknoloji ürünlerinin ve otomatik test araçlarının ihtiyaçlarını karşılamaya yöneliktir. UI Otomasyonu, Microsoft Etkin Erişilebilirlik üzerinde birçok geliştirme sunar. Bu konuda iki teknoloji arasındaki farklar açıklanmaktadır.
Bu konu aşağıdaki bölümleri içerir.
- Programlama Dilleri
- Sunucuları ve İstemcileri
- kullanıcı arabirimi öğelerini
- Ağaç Görünümleri ve Gezinti
- Rolleri ve Denetim Türleri
- Durumları ve Özellikleri
- olayları
- UI Otomasyonu Etkin Erişilebilirlik Özelliklerine ve Nesnelerine Erişmeyi
- İlgili konular
Programlama Dilleri
Microsoft Etkin Erişilebilirlik, çift arabirim desteğine sahip Bileşen Nesne Modeli'ni (COM) temel alır ve bu nedenle C/C++ ve betik dillerinde programlanabilir.
UI Otomasyonu kullanıma sunulduğunda, istemci API'si yönetilen kodla sınırlıyken sağlayıcı API'sinde hem yönetilen hem de yönetilmeyen uygulamalar yer aldı. Windows 7 ile, C/C++'da UI Otomasyonu istemci uygulamalarını programlamayı kolaylaştırmak için yeni bir COM tabanlı istemci API'si kullanıma sunulmuştur.
Sunucular ve İstemciler
Microsoft Etkin Erişilebilirlik'te sunucular ve istemciler, büyük ölçüde IAccessible arabiriminin sunucu uygulaması aracılığıyla doğrudan iletişim kurar.
UI Otomasyonu'nda, sunucu (sağlayıcı) ile istemci arasında temel bir hizmet bulunur. Çekirdek hizmet, sağlayıcılar tarafından uygulanan arabirimlere çağrı yapar ve kullanıcı arabirimi öğeleri için benzersiz çalışma zamanı tanımlayıcıları oluşturma gibi ek hizmetler sağlar. İstemci uygulamaları, bir CUIAutomation nesnesi oluşturarak bu çekirdek hizmete erişim kazanır. Bu nesne, sağlayıcı arabirimlerinden ayrı istemci arabirimleri kümesini destekler. Daha fazla bilgi için bkz. CUIAutomation Nesnesi Oluşturma.
UI Otomasyonu sağlayıcıları Microsoft Active Accessibility istemcilerine bilgi sağlayabilir ve Microsoft Active Accessibility sunucuları da UI Automation istemci uygulamalarına bilgi sağlayabilir. Ancak, Microsoft Etkin Erişilebilirlik UI Otomasyonu kadar fazla bilgi sunmadığından, iki model tam olarak uyumlu değildir.
UI Öğeleri
Microsoft Etkin Erişilebilirlik, bir kullanıcı arabirimi öğesini bir alt tanımlayıcıyla eşleştirilmiş IAccessible arabirimi olarak sunar. İki IAccessible işaretçisinin aynı öğeye başvurup başvurmadığını belirlemek için karşılaştırmak zordur.
UI Otomasyonu'nda her öğe, IUIAutomationElement arabirimini istemcilere sunan bir nesne olarak temsil edilir. Öğeler, IUIAutomationElement::GetRuntimeIdkullanılarak alınan çalışma zamanı tanımlayıcılarıyla karşılaştırılabilir.
Ağaç Görünümleri ve Gezinti
Ekrandaki kullanıcı arabirimi öğeleri, masaüstü kök, uygulama pencereleri anında alt öğeler ve uygulamalar içindeki öğeler ise diğer alt öğeler olarak bir ağaç yapısı olarak görülebilir.
Microsoft Etkin Erişilebilirlik'te, son kullanıcılarla ilgisiz olan birçok kullanıcı arabirimi öğesi ağaç yapısında kullanıma sunulur. İstemci uygulamaları, hangi öğelerin anlamlı olduğunu belirlemek için ağaçtaki tüm öğeleri incelemelidir.
UI Otomasyonu istemci uygulamaları, filtrelenmiş bir görünüm aracılığıyla kullanıcı arabirimini görür. Görünüm yalnızca kullanıcıya bilgi veren veya kullanıcının etkileşim kurabileceği öğeleri içerir. Yalnızca denetim öğelerini ve yalnızca içerik öğelerini içeren önceden tanımlanmış görünümler kullanılabilir ve istemci uygulamaları özel görünümler tanımlayabilir. UI Otomasyonu, kullanıcı arabirimini kullanıcıya açıklamayı ve kullanıcının uygulamalarla etkileşim kurmasına yardımcı olmasını kolaylaştırır.
Microsoft Etkin Erişilebilirlik'te, öğeler arasındaki gezinti uzamsaldır; örneğin, ekranın solunda yer alan öğeye geçme, mantıksal, örneğin, bir iletişim kutusundaki bir sonraki menü öğesine veya sekme sırasına göre bir sonraki öğeye veya hiyerarşiktir. Örneğin, kapsayıcıdaki ilk alt öğeye veya bir alt öğeden üst öğesine geçiş. Hiyerarşik gezinti, alt öğelerin her zaman IAccessibleuygulayan nesneler olmamasıyla karmaşıktır.
UI Otomasyonu'nda tüm ui öğeleri, IUIAutomationElement arabirimini kullanıma sunan ve aynı temel işlevselliği destekleyen COM nesneleridir. Sağlayıcı açısından bakıldığında, COM nesneleri IRawElementProviderSimple'den devralınan bir arabirim uygular. Gezinti çoğunlukla hiyerarşiktir; yani, ebeveynlerden çocuklara ve bir kardeşten diğerine. Ancak, eşdüzeyler arasındaki gezinti, sekme sırasına uygun olabileceğinden mantıksal bir öğeye sahiptir. İstemci, IUIAutomationTreeWalkerkullanarak herhangi bir başlangıç noktasından, ağacın filtrelenmiş herhangi bir görünümünü kullanarak gezinebilir. İstemci ayrıca IUIAutomationElement::FindFirst ve IUIAutomationElement::FindAllkullanarak belirli alt öğelere veya alt öğelere gidebilir. Örneğin, bir iletişim kutusundaki belirtilen denetim düzenini destekleyen tüm öğeleri almak kolaydır.
UI Otomasyonu'nda gezinti, Microsoft Etkin Erişilebilirlik'ten daha tutarlıdır. Açılan listeler ve açılır pencereler gibi bazı öğeler Microsoft Etkin Erişilebilirlik ağacında iki kez görünür ve bu öğelerden gezinti beklenmeyen sonuçlar verebilir. Bir rebar denetimi için Microsoft Etkin Erişilebilirlik'i düzgün bir şekilde uygulamak zordur. UI Otomasyonu, pencere sahipliği tarafından dayatılan hiyerarşiye rağmen bir öğenin ağaçta herhangi bir yere yerleştirilebilmesi için yeniden ayrıştırma ve yeniden konumlandırmayı etkinleştirir.
Roller ve Denetim Türleri
Microsoft Etkin Erişilebilirlik, kullanıcı arabirimindeki öğe rolünün açıklamasını almak için accRole özelliğini (IAccessible::get_accRole) kullanır, örneğin ROLE_SYSTEM_SLIDER veya ROLE_SYSTEM_MENUITEM. Bir öğenin rolü, kullanılabilir işlevselliğinin ana ipucudur. Denetimle etkileşim, IAccessible::accSelect ve IAccessible::accDoDefaultActiongibi sabit yöntemler kullanılarak elde edilir. İstemci uygulaması ve kullanıcı arabirimi arasındaki etkileşim, IAccessiblearacılığıyla yapılabileceklerle sınırlıdır.
Buna karşılık, UI Otomasyonu IUIAutomationElement::CurrentControlType (veya IUIAutomationElement::CachedControlType) özelliği tarafından açıklanan öğenin denetim türünü beklenen işlevselliğinden ayrıştırır. İşlevsellik, özel arabirimlerin uygulanması yoluyla sağlayıcı tarafından desteklenen denetim desenleri tarafından belirlenir. Denetim desenleri, belirli bir kullanıcı arabirimi öğesi tarafından desteklenen tüm işlev kümesini açıklamak için birleştirilebilir. Bazı sağlayıcıların belirli bir denetim düzenini desteklemesi gerekir. Örneğin, onay kutusunun sağlayıcısı Geçiş denetim desenini desteklemelidir. Diğer sağlayıcıların bir veya daha fazla denetim desenini desteklemesi gerekir. Örneğin düğmenin Geçiş veya Invoke denetim desenini desteklemesi gerekir. Diğer kişiler denetim desenlerini desteklemez. Örneğin, taşınamayan, yeniden boyutlandırılamayan veya yerleştirilemeyen bir bölmenin denetim desenleri yoktur.
UI Otomasyonu, UIA_CustomControlTypeId sabiti tarafından tanımlanan özel denetimleri destekler ve IUIAutomationElement::CurrentLocalizedControlType (veya IUIAutomationElement::CachedLocalizedControlType) özelliği tarafından açıklanabilir.
Aşağıdaki tabloda Microsoft Active Accessibility nesne rolleri UI Otomasyonu denetim türleriyle eşlenmiştir.
Durumlar ve Özellikler
Microsoft Etkin Erişilebilirlik öğeleri ortak bir özellik kümesini destekler. accState gibi bazı özelliklerin, öğe rolüne bağlı olarak farklı koşulları tanımlaması gerekir. Sunucular, öğeyle ilgili olmayan özellikler bile olsa özellik döndüren IAccessible tüm yöntemlerini uygulamalıdır.
UI Otomasyonu, bazıları Microsoft Etkin Erişilebilirlik durumlarına karşılık gelen ek özellikleri tanımlar. Bazı özellikler tüm öğeler için ortaktır, ancak diğer özellikler denetim türlerine ve denetim desenlerine özeldir. UI Otomasyonu sağlayıcısının ilgisiz özellikler uygulaması gerekmez, ancak desteklemediği özellikler için null değer döndürebilir. UI Otomasyonu çekirdek hizmeti, varsayılan pencere sağlayıcısından bazı özellikleri alabilir ve bunlar sağlayıcı tarafından açıkça uygulanan özelliklerle birleştirilir.
UI Otomasyonu, daha fazla özelliği desteklemenin yanı sıra özelliklerin önbelleğe alınmasına izin vererek daha iyi performans sağlar.
Aşağıdaki tabloda, iki modeldeki bazı özellikler arasındaki yazışma gösterilmektedir. UI Otomasyonu özellik kimliklerinin açıklamaları için bkz. Automation Öğesi Özellik Tanımlayıcıları.
Etkin Erişilebilirlik özellik erişimcisi | UI Otomasyonu özellik kimliği | Açıklamalar |
---|---|---|
get_accKeyboardShortcut | UIA_AccessKeyPropertyId veya UIA_AcceleratorKeyPropertyId | her ikisi de varsa UIA_AccessKeyPropertyId önceliklidir. |
get_accName | UIA_NamePropertyId | |
get_accRole | UIA_ControlTypePropertyId | Türleri denetlemek için rolleri eşlemek için önceki tabloya bakın. |
get_accValue | UIA_ValueValuePropertyId veya UIA_RangeValueValuePropertyId | Yalnızca IUIAutomationValuePattern veya IUIAutomationRangeValuePatterndestekleyen denetim türleri için geçerlidir. Aralık değerleri, Microsoft Etkin Erişilebilirlik davranışıyla tutarlı olması için 0-100 arasında normalleştirilir. Değerler dize olarak temsil edilir. |
get_accHelp | UIA_HelpTextPropertyId | |
accLocation | UIA_BoundingRectanglePropertyId | |
get_accDescription | Desteklenmez. | accDescription, Microsoft Etkin Erişilebilirlik'te net bir belirtime sahip değildi ve bu da sunucuların bu özelliğe farklı bilgi parçaları yerleştirmesine neden oldu. |
get_accHelpTopic | Desteklenmez. |
Aşağıdaki tabloda, Microsoft Etkin Erişilebilirliknesne durumu sabitlerine karşılık gelen UI Otomasyonu özellik kimlikleri gösterilmektedir.
Özellik kimliklerinin tam listesi için bkz. Özellik Tanımlayıcıları.
Olay
Microsoft Etkin Erişilebilirlik'in aksine, UI Otomasyonu'ndaki olay mekanizması pencere tanıtıcılarına yakından bağlı olan Windows olay yönlendirmesine güvenmez ve istemci uygulamasının kancaları ayarlamasını gerektirmez. Olaylara yönelik abonelikler, yalnızca belirli olaylara değil, ağacın belirli bölümlerine göre ince ayar yapılabilir. Sağlayıcılar ayrıca hangi olayların dinlenmekte olduğunu izleyerek olay oluşturmada ince ayar yapabilir.
Bunlar doğrudan olay geri çağırmaya geçirildiğinden istemcilerin olayları tetikleyen öğeleri alması da daha kolaydır. İstemci olaya abone olduğunda bir önbellek isteği sağlandıysa, öğenin özellikleri otomatik olarak önceden oluşturulur.
Aşağıdaki tabloda, Microsoft Active Accessibility olay sabitlerinin ve UI Otomasyonu olay kimliklerinin yazışmaları gösterilmektedir.
UI Otomasyonundan Etkin Erişilebilirlik Özelliklerine ve Nesnelerine Erişme
Microsoft Etkin Erişilebilirlik'te kullanılamayan UI Otomasyonu'nun temel özelliklerinden biri, tek bir çapraz işlemle birden çok özelliği getirebilme özelliğidir.
Mevcut Microsoft Etkin Erişilebilirlik istemcileri, IUIAutomationLegacyIAccessiblePattern arabirimini kullanarak bu beceriden yararlanabilir. Bu arabirim, kullanıcı arabirimi öğelerinde Microsoft Etkin Erişilebilirlik özelliklerini ve yöntemlerini kullanıma sunan denetim deseni temsil eder. Öğeler alınırken, bir uygulama bu denetim düzeninin ve özelliklerinin önbelleğe alınmasını isteyebilir.
IUIAutomationLegacyIAccessiblePattern, istemcilerin IAccessibleiçin yerel desteği olmayan öğelerden Microsoft Etkin Erişilebilirlik özelliklerini almasını da sağlar.
IUIAutomationLegacyIAccessiblePattern özelliklerindeki değişiklikler UI Otomasyonu olaylarını tetiklemez.