c # - System.Windows.Automation, IUIAutomationClient får valgt tekst

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg konverterede min System.Windows.Automation kode til den nyere, hurtigere IUIAutomation ramme. Jeg ønsker at få den aktuelle valgte tekst i enhver applikation (skal understøtte Automation selvfølgelig). Se den nye kode nedenfor


CUIAutomation \_automation = new CUIAutomation();                    
var element = \_automation.GetFocusedElement();
                    if (element != null)
                        {
                        IUIAutomationTextPattern textPattern = (IUIAutomationTextPattern) element.GetCurrentPattern(10014);

                        if(textPattern != null)
                        {
                            var sb = new StringBuilder();
                            var range =  textPattern.GetSelection();
                            sb.Append(range.GetElement(0).GetText(-1));
                            return sb.ToString();
                        }
                    }


Det er underligt, at denne kode ikke fungerer i de fleste tilfælde, men når jeg tilføjer (tilføj begyndelsen af ​​funktionen) fungerer følgende kodestykke fra den gamle system.Windows.Automation-ramme, det fungerer pludselig.


var x = AutomationElement.FocusedElement;


Der ser ud til at være noget brudt i IUIAutomation-rammen. Hvordan kan dette løses. Tilføjelse af det gamle kodestykke er ikke en mulighed. Det reducerer funktionen drastisk.

Bedste reference