Информация об изменениях

Сообщение Re[7]: Кликнуть в скрытое окно от 07.08.2019 6:20

Изменено 07.08.2019 6:24 Cannol

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


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

Уже более понятно с сообщением о координатах, сейчас без всякого SetCursorPos() управляюсь. Когда окно физически видно — всё отлично. Но снова, как только окно делается скрытым или выводится за пределы рабочего стола — ввод не ловится в том окне. Увы:
...
else if (byCodeOption == 1)
{
    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 подружиться.
Re[7]: Кликнуть в скрытое окно
Здравствуйте, 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 подружиться.