MouseAndKeyInput не отжимается кнопка мыши

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

MouseAndKeyInput не отжимается кнопка мыши

Сообщение ViTality » 30.09.2014 13:32:31

MouseAndKeyInput это такой компонент-некомпонент в Лазарусе который позволяет эмулировать нажатия мыши и клавы.
Вот столкнулся с проблемой, что кнопка мыши, какбы, "не отжимается" [s]если было перемещение[/s].

Этот код из примера выделяющий ячейки отрабатывает нормально
Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
  Application.QueueAsyncCall(@SelectCells, 0);
end;

procedure TForm1.SelectCells(Data: PtrInt);
begin
  StringGrid1.SetFocus;
  Application.ProcessMessages;
  MouseInput.Down(mbLeft, [], StringGrid1, 10, 10);
  MouseInput.Up(mbLeft, [], StringGrid1, 200, 100);
end;

А вот в следующем коде (нужно переместить окно) кнопка "залипает". и приходится уже самому еще раз щелкать мышью чтоб отпустило
Код: Выделить всё
procedure TForm1.MoveWindow(Data: PtrInt);
begin
  Application.ProcessMessages;
  MouseInput.Down(mbLeft, [], form1.Left+50, form1.Top+10);
  MouseInput.Up(mbLeft, [], 10, 10);
end;

подскажите в чем трабл? как "отпустить" окно?

Добавлено спустя 1 час 21 минуту 59 секунд:
проверил просто
Код: Выделить всё

Application.ProcessMessages;
  MouseInput.click(mbLeft, [], form1.Left+50, form1.Top+10);

тоже залипает... значит перемещение тут не причем...

Добавлено спустя 21 минуту 34 секунды:
проблема возникает только с окном собственного приложения
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Re: MouseAndKeyInput не отжимается кнопка мыши

Сообщение Verx0Laz » 02.10.2014 02:19:18

А так пробовал?
Код: Выделить всё
    procedure TForm1.MoveWindow(Data: PtrInt);
    begin
      MouseInput.Down(mbLeft, [], form1.Left+50, form1.Top+10);
      MouseInput.Up(mbLeft, [], 10, 10);
      Application.ProcessMessages;
    end;

Или так?
Код: Выделить всё
    procedure TForm1.MoveWindow(Data: PtrInt);
    begin
      Application.ProcessMessages;
      MouseInput.Down(mbLeft, [], form1.Left+50, form1.Top+10);
      MouseInput.Up(mbLeft, [], 10, 10);
      Application.ProcessMessages;
    end;
Аватара пользователя
Verx0Laz
постоялец
 
Сообщения: 125
Зарегистрирован: 11.09.2007 11:24:07

Re: MouseAndKeyInput не отжимается кнопка мыши

Сообщение ViTality » 02.10.2014 16:10:15

попробовал. не помогает(
Сделал тоже самое через mouse_event - не залипает, но окно появляется уже в месте отпускания кнопки. а нужно чтоб двигалось вместе с курсором
Код: Выделить всё
x:=Round((form1.Left+50) * (65535 / Screen.Width));
y:=Round((form1.Top+10) * (65535 / Screen.Height));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, x, y, 0, 0);
sleep(500);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
sleep(500);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, x+10000, y+10000, 0, 0);
sleep(500);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, x+20000, y+20000, 0, 0);
sleep(500);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, x+30000, y+30000, 0, 0);
sleep(500);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, x+30000, y+30000, 0, 0);
sleep(1500);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, 0, 0, 0, 0);

если повтыкать после каждого действия Application.ProcessMessages;
то перемещается но "криво" и опятьже залипает на курсор(
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 226

Рейтинг@Mail.ru
cron