UI Automation najde samo obrazec Accessa, ne pa kontrolnika WKL
Okolje
WKL Forms Object Library v obrazcih Accessa (vse izdaje), ki jih poizveduje odjemalec UI Automation, na primer
orodje za preizkušanje ali preverjanje dostopnosti: AutomationElement.FromPoint nad kontrolnikom ali sprehod po podrejenih elementih elementa
obrazca. Access za Microsoft 365, 32- ali 64-bitni.
Vzrok
Access obrazec predstavi UI Automation kot lasten element in okna kontrolnikov ActiveX na njem ne navede kot
podrejenih elementov tega elementa. FromPoint nad kontrolnikom WklNavBar, WklActionBar ali WklGrid zato
vrne obrazec (ali glavno okno Accessa), surovi pogled obrazca pa za kontrolnik ne prikaže podrejenega elementa.
Kontrolnik ne manjka: vsak kontrolnik WKL, ki ima okno, UI Automation odgovarja sam iz tega okna – vrstica za
krmarjenje kot seznam z imenom „Navigation“ z eno postavko za vsak vnos, mreža kot podatkovna mreža z vrsticami
in celicami, vrstica z ukazi kot orodna vrstica.
Bralnik zaslona, kot je Pripovedovalec, kontrolnike doseže s tipkovnico (s tipko Tab v kontrolnik): kontrolnik ima takrat fokus, UI Automation pa sporoči element s fokusom v oknu kontrolnika.
Rešitev
Okno kontrolnika poiščite po njegovi ročici in vprašajte to okno:
- Pod glavnim oknom Accessa lastnega procesa Accessa (
Application.hWndAccessApp) poiščite okno obrazca (OForm; stran v kontrolniku podobrazca jeOFormSub). - Naštejte njegova podrejena okna (
EnumChildWindows) in obdržite vidna, katerih ime razreda se začne zWindowsForms10. Kontrolnik ima običajno dve okni enake velikosti, gostitelja OLE in pogled kontrolnika; vzemite najbolj notranje. - S to ročico pokličite
AutomationElement.FromHandle. Med več kontrolniki izberite pravega po tem, kar sporoči UI Automation, na primer po vrsti kontrolnika List in imenu „Navigation“.
Access okno kontrolnika ustvari znova, ko se spremeni njegova širina ali ko je kontrolnik onemogočen in znova
omogočen; ročico pred vsako uporabo poiščite znova. Sprašujte samo okna lastnega procesa Accessa in nikoli ne
iščite od AutomationElement.RootElement: tako iskanje sprašuje tudi vse druge programe v računalniku,
vključno z drugimi primerki Accessa.
Sorodne teme
- Kopiranje in lepljenje po številnih sejah Accessa ne delujeta: zakaj naj odjemalec UI Automation sprašuje samo lasten proces Accessa.