Re[7]: Кликнуть в скрытое окно
От: Cannol  
Дата: 07.08.19 06:20
Оценка:
Здравствуйте, Carc, Вы писали:
C>Можно юзать SendInput — обычно работает.
Да, его и использую больше всего.


Я писал:
C>Т.е., после вызова SetCursorPos() я всё равно пробовал отправлять сообщения о нажатии вместе с координатами клика (pt.x, pt.y).
C>Так всё равно не работает.

Уже более понятно с сообщением о координатах, сейчас без всякого SetCursorPos() управляюсь. Когда окно физически видно — всё отлично. Но снова, как только окно делается скрытым или выводится за пределы рабочего стола — ввод не ловится в том окне. Увы:
...
else if (byCodeOption == 1)
{
    #define ABSOLUTE_XY_MAX 65535

    INPUT input={0};
    // left movement
    int screenX = GetSystemMetrics(SM_CXSCREEN);
    int screenY = GetSystemMetrics(SM_CYSCREEN);
    input.type = INPUT_MOUSE;
    input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE; // mouse movement
    input.mi.dx = pt.x * (ABSOLUTE_XY_MAX / screenX); input.mi.dy = pt.y * (ABSOLUTE_XY_MAX / screenY);
    SendInput(1, &input, sizeof(INPUT));
    Sleep(1);
    // left down
    ZeroMemory(&input,sizeof(INPUT)); //clear out input
    input.type = INPUT_MOUSE;
    input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; // mouse button down
    SendInput(1,&input,sizeof(INPUT));
    Sleep(1);
    // left up
    ZeroMemory(&input,sizeof(INPUT)); //clear out input
    input.type = INPUT_MOUSE;
    input.mi.dwFlags = MOUSEEVENTF_LEFTUP; // mouse button up
    SendInput(1,&input,sizeof(INPUT));
}


Не судьба, видимо, с IE подружиться.
Отредактировано 07.08.2019 6:24 Cannol . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.