Ho difficoltà a leggere il contenuto di un Datagrid in un'applicazione esterna utilizzando l'automazione dell'interfaccia utente e potrebbe utilizzare alcuni indicatori. Ecco quello che ho finora:Contenuto di Datagrid con UI Automation e .net
int id = System.Diagnostics.Process.GetProcessesByName("Book")[0].Id;
AutomationElement desktop = AutomationElement.RootElement;
AutomationElement bw = desktop.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ProcessIdProperty, id));
AutomationElement datagrid = bw.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "lv"));
AutomationElementCollection lines = datagrid.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.DataItem));
AutomationElementCollection items = lines[1].FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Custom));
GridItemPattern pattern = items[1].GetCurrentPattern(GridItemPattern.Pattern) as GridItemPattern;
TableItemPattern tablePattern = items[1].GetCurrentPattern(TableItemPattern.Pattern) as TableItemPattern;
Questo funziona in quanto posso accedere gli ID delle colonne e gli ID Linea della GridItemPattern e TableItemPattern ma come faccio accedere al valore che è in quella cella specifico? È possibile?
Grazie.
Grazie, sfortunatamente ottengo un'eccezione "Motivo non supportato" quando provo ad afferrare il modello di valore. UISpy mostra solo GridItem e TableItem come pattern validi. Altre idee? :) – ChrisO
Questo è triste = (Nella mia applicazione di test il valore visualizzato nella cella era contenuto anche nel campo Nome dell'elemento AutomationElementInformation della cella ('items [1] .Current.Name' per il tuo campione) – Natalia