UI Automation ElementFromPoint возвращает рабочий стол - PullRequest
0 голосов
/ 17 июня 2020

Я разрабатываю приложение, которое может взаимодействовать с элементом под курсором мыши. Чтобы сделать это, я использую UI Automation и метод ElementFromPoint .

К сожалению, метод ElementFromPoint возвращает только элемент рабочего стола. Я проверил это, нарисовав прямоугольник вокруг найденного элемента, и все время он рисовал aws по всей области рабочего стола.

Некоторые собранные строки кода, просто чтобы показать, как я использую методы :

CoInitialize(nullptr);
CoCreateInstance(CLSID_CUIAutomation, nullptr, CLSCTX_INPROC_SERVER,  IID_PPV_ARGS(&uiAutomation);

IUIAutomationElement* uiAutomationElement = nullptr;
this->uiAutomation->ElementFromPoint({point.x(), point.y()}, &uiAutomationElement);

RECT rect = {0, 0 ,0, 0};
uiAutomationElement->get_CurrentBoundingRectangle(&rect);

// Some code to draw the rect to screen

Проверка наличия HRESULT в реальном коде, он удален, чтобы упростить приведенный выше фрагмент. Один раз я заменил ElementFromPoint на GetFocusedElement , этот метод работает должным образом. Я подозревал координаты мыши, но даже установив координату c (например, 200, 200), он все равно не может найти элемент, помещенный в это место.

...