Получить инструментальную кнопку с помощью UIAutomation - PullRequest
0 голосов
/ 16 октября 2018

Используя UIAutomation в Windows Forms, я пытаюсь получить любой элемент управления с помощью мыши в определенной форме.Цель состоит в том, чтобы воздействовать на элементы управления приложения, извлекать их и воздействовать на них.

Проблема, с которой я сталкиваюсь много раз, заключается в том, что я не могу найти кнопку с инструментами.Каждый раз, когда я получаю панель (не родитель и не дочерняя кнопка, которую я хочу, но брат и сестра родителя).

Это кнопка инструмента, которую я хочу получить: screenshot 1.

То же самоеcontrol, но в Inspect.exe (выделено: элемент управления, который я получаю): screenshot 2

Я думал, что это из-за порядка z элементов управления, затем я попытался использовать элементы управления одного уровня для элементов управления, где ихbounds содержит мышь (для получения всех элементов управления под курсором в любом случае их порядок z).Это не удается, потому что кнопка toolstrip не извлекается.

В настоящее время я использую UIAutomation, а не CodedUI, потому что мне нужно запустить специальную программу, которая извлекает элементы управления и выполняет автоматические тесты на определенном сервере, но на самом деле у меня есть VisualЛицензия Studio Enterprise 2017 установлена ​​на моей машине, но вторая лицензия (для сервера) и третья лицензия для коллеги по работе со мной на ней будет немного дороже.

Помнить, что программы должны быть извлеченыдинамически контролирует мышь, может кто-нибудь подскажет, что может помочь мне глубже исследовать?

Спасибо и приветствия

Используемый метод:

var aimed = AutomationElement.FromPoint(new System.Windows.Point(Cursor.Position.X, Cursor.Position.Y));

1 Ответ

0 голосов
/ 17 октября 2018

Решено с помощью Обход .

Я сделал рекурсивный метод для более глубокого поиска в дочерних элементах управления, который содержит мышь (метод BoundingRectangle.Contains`).Таким образом, я могу найти элементы управления внутри панели инструментов.

Но метод AutomationElement.FromPoint не выполняет поиск внутри панели инструментов.

...