Re[6]: Кликнуть в скрытое окно
От: Cannol  
Дата: 07.08.19 01:19
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:
MA>SetCursorPos обрезает координаты к заданным через ClipCursor или видимой области рабочего стола.
Гм, я как-то упустил этот факт.

MA>Вообще, зачес вообще SetCursorPos нужен? Почему бы просто не посылать сообщения WM_MOUSEDOWN с нужными координатами? (Я мог чего-то упустить или забыть в треде).

Я не очень с WinAPI, прошу уточнить:
1. WM_MOUSEDOWN не нашёл в хидерах/документации, видимо, можно использовать WM_LBUTTONDOWN/WM_LBUTTONUP вместо этого?
2. В вышеприведённом моём примере есть варианты с использованием этих 2 сообщений:
...
else if (byCodeOption == 2)
{
    // Option B1
    SendMessage(hwnd, WM_LBUTTONDOWN, pt.x, pt.y);
    Sleep(10);
    SendMessage(hwnd, WM_LBUTTONUP, pt.x, pt.y);
}
else if (byCodeOption == 4)
{
    // Option B2
    SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
    Sleep(10);
    SendMessage(hwnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
}
else if (byCodeOption == 6)
{
    // Option C1
    PostMessage(hwnd, WM_LBUTTONDOWN, 0, MAKELPARAM(pt.x, pt.y));
    Sleep(5);
    PostMessage(hwnd, WM_LBUTTONUP, 0, MAKELPARAM(pt.x, pt.y));
}
else if (byCodeOption == 8)
{
    // Option C2
    PostMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
    Sleep(5);
    PostMessage(hwnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
}
else if (byCodeOption == 10)
{
    // Option C3
    PostMessage(hwnd, WM_LBUTTONDOWN, pt.x, pt.y);
    Sleep(5);
    PostMessage(hwnd, WM_LBUTTONUP, pt.x, pt.y);
}


Т.е., после вызова SetCursorPos() я всё равно пробовал отправлять сообщения о нажатии вместе с координатами клика (pt.x, pt.y).
Так всё равно не работает. Или может, у меня тут где-то ошибка? Или по отдельности надо отправлять сообщение (отдельно перемещение и отдельно клик)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.