Задать вопрос
@Lynatik001

Почему неправильно работает SendMessage?

кликает лишь когда мышь в границе окна и то не по координатам - а в ту точку где сейчас мышь находится - специально поставил 0 0 коорды что б проверить ли кликнет в левый верхний угол - кликает туда просто где мышь ща находится*(

Mouse.MouseClick(hwnd, (IntPtr)0, (IntPtr)0);

public static void MouseClick(IntPtr hwnd, IntPtr x, IntPtr y)
        {
            SendMessage(hwnd, (int)WindowMessages.WM_LBUTTONDOWN, x, y);
            Thread.Sleep(1000);
            SendMessage(hwnd, (int)WindowMessages.WM_LBUTTONUP, x, y);
        }
        public static void MouseClick(IntPtr hwnd, IntPtr x, IntPtr y, int timeP)
        {
            SendMessage(hwnd, (int)WindowMessages.WM_LBUTTONDOWN, x, y);
            Thread.Sleep(timeP);
            SendMessage(hwnd, (int)WindowMessages.WM_LBUTTONUP, x, y);
        }
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Merion Academy
    Администрирование MS Windows Server
    1 месяц
    Далее
  • Сетевая Академия ЛАНИТ
    Администрирование System Center Configuration Manager
    1 неделя
    Далее
  • Нетология
    Инженер по автоматизации
    13 месяцев
    Далее
  • Skillbox
    Системный администратор с нуля
    6 месяцев
    Далее
  • EasyCode
    Курсы компьютерной грамотности для детей от 7 до 9 лет
    1 неделя
    Далее
  • Сетевая Академия ЛАНИТ
    Автоматизация администрирования с Windows PowerShell
    1 неделя
    Далее
  • Сетевая Академия ЛАНИТ
    Администрирование Microsoft Exchange Server 2016
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 2
У вас WPARAM и LPARAM указаны неверно. LPARAM содержит координаты в старшем и младшем слове.
https://docs.microsoft.com/ru-ru/windows/win32/inp...
Ответ написан
Комментировать
@Sumor
Координаты пакуются в последний параметр:
SendMessage(hwnd, (int)WindowMessages.WM_LBUTTONDOWN, 0, (x & 0xffff)|(y << 16) );
Thread.Sleep(1000);
SendMessage(hwnd, (int)WindowMessages.WM_LBUTTONDOWN, 0, (x & 0xffff)|(y << 16) );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы