Я разрабатываю приложение, которое может взаимодействовать с элементом под курсором мыши. Чтобы сделать это, я использую 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), он все равно не может найти элемент, помещенный в это место.