Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Имитация клика мыши по форме


Автор: kosyak 2.7.2011, 01:59
Столкнулся с такой проблемой, необходимо с имитировать клик мыши на форме. Причем нужно сделать без передвижения курсора и имитация клика, с этим все хорошо. Есть ли возможность с имитировать клик мыши не наводя курсор мыши на форму?

Была идея с помощью SendMessage послать сообщение WM_MOUSEMOVE, а затем послать сообщение BM_CLICK. BM_CLICK работает на ура, а вот с WM_MOUSEMOVE не могу разобраться с MAKEPOINTS.

Автор: jhonyxakep 2.7.2011, 11:05
Цитата(kosyak @  2.7.2011,  01:59 Найти цитируемый пост)
Есть ли возможность с имитировать клик мыши не наводя курсор мыши на форму?


Каждый элемент формы имеет свой класс и имя. Таким образом можно получить хендл кнопки, текстового поля и тп, а потом послать сообщение нажатие кнопки мыши.

Автор: kosyak 2.7.2011, 12:38
хэндл я определяю, посылал сообщения нажатия кнопки мыши, ничего не получается, событие формы OnClick не наступает, с кнопкой проблем нет все хорошо работает.

Делаю вот так:
Код

...
hWnd:=findwindow  ('Tform1', 'Form1');
SendMessage(hWnd,BM_CLICK,0,0);
...


Поэтому я хотел сначала имитировать движение мыши по форме
Код

...
SendMessage (hWnd,WM_MOUSEMOVE,0, MAKEPOINTS(616, 188));
...


Makepoints не верно задан, не знаю как правильно

Автор: Keeper89 2.7.2011, 14:19
Код

  FormHandle: THandle;
begin
  FormHandle := FindWindow('Tform1', 'Form1');
  if FormHandle <> 0 then
  begin
    SendMessage(FormHandle, WM_LBUTTONDOWN, 0, 0);
    SendMessage(FormHandle, WM_LBUTTONUP, 0, 0);
  end;

Автор: kosyak 2.7.2011, 14:58
Цитата(Keeper89 @ 2.7.2011,  14:19)
Код

  FormHandle: THandle;
begin
  FormHandle := FindWindow('Tform1', 'Form1');
  if FormHandle <> 0 then
  begin
    SendMessage(FormHandle, WM_LBUTTONDOWN, 0, 0);
    SendMessage(FormHandle, WM_LBUTTONUP, 0, 0);
  end;

Спасибо большое!!! все работает, не понятно почему SendMessage(hWnd,BM_CLICK,0,0), ведь BM_CLICK уже содержит сообщения WM_LBUTTONDOWN и WM_LBUTTONUP

Автор: Keeper89 2.7.2011, 15:09
http://msdn.microsoft.com/en-us/library/bb775985%28v=vs.85%29.aspx только для кнопок предназначен.

Автор: serega12 3.7.2011, 11:39
Я новичёк в программ smile ировании, можно более подробно, что и куда прописывать???

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)