Я пытаюсь использовать UI Automation для нажатия простой кнопки в стороннем приложении.
Я инициализировал объект IUIAutomation и получил IUIAutomationElement с помощью функции ElementFromHandle () с дескриптором окна стороннего приложения.
Но я действительно не могу понять, как использовать этот элемент IUIAutomationElement, чтобы найти кнопку и нажать левую кнопку.
Это мой код до сих пор:
void Control::clickButton()
{
for (std::list<Window>::iterator i = mainDetector.getWindowList().begin(); i != mainDetector.getWindowList().end(); ++i)
{
if (i->getTitle().find("PokerStars Lobby") != std::string::npos)
{
parentWindowHandle = (HWND)i->getHandle();
}
}
InitializeUIAutomation(iUiAutomation);
(*iUiAutomation)->ElementFromHandle(parentWindowHandle, iUiAutomationElement);
}
Надеюсь, что кто-то может помочь мне, как продолжить отсюда, чтобы фактически нажать на кнопку
Вы можете найти его проще в использовании TestStack.White (также доступно в NuGet), чтобы делать подобные вещи. Он включает в себя множество UIAutomation, чтобы упростить написание тестов для приложений Windows.
Чтобы найти целевую кнопку, вы можете использовать «UIVerify» или «осмотреть» из Windows 10 SDK, что позволяет просматривать дерево автоматизации пользовательского интерфейса для всех окон на рабочем столе. Найдя интересующую кнопку, вы можете отметить ее AutomationId или другие свойства, которые будут использоваться в качестве параметров поиска для одного из TestStack.White
Поисковые команды или IUIAutomationTreeWalker
пример.
Других решений пока нет …