Я создаю программу, которая выбирает объект с помощью курсора мыши с помощью AccessibleObjectFromPoint (), однако это приводит к неверному результату.
Я наведите указатель мыши на этот значок, но вместо этого он выбирает другой значок.
Вот мой пример кода:
#include <windows.h>
#include <oleacc.h>
#include <cstdio>
#include <iostream>
#include <string>
#pragma comment(lib, "oleacc.lib")
HRESULT SelectItemAtPoint(POINT point)
{
VARIANT varItem;
IAccessible* pAcc;
HRESULT hr = AccessibleObjectFromPoint(point, &pAcc, &varItem);
if ((hr == S_OK))
{
hr = pAcc->accSelect((SELFLAG_TAKEFOCUS | SELFLAG_TAKESELECTION), varItem);
VariantClear(&varItem);
pAcc->Release();
}
return hr;
}
int main()
{
CoInitialize(NULL);
while (true)
{
POINT pt;
GetCursorPos(&pt);
printf("x: %d y: %d", pt.x, pt.y);
SelectItemAtPoint(pt);
Sleep(50);
}
return 0;
}
На изображении я завис в Unreal Engine, но вместо этого программа выбрала MATLAB.
Я также проверил точки курсора.
Есть ли способы как это исправить?
РЕДАКТИРОВАТЬ: я использую Windows 10 Home с Visual Studio 2017