Показать сообщение отдельно
  #1  
Старый 18.10.2010, 19:13
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию Клик в свёрнутом окне

На форме WebBrowser. В нём - флеш игра. Нужно кликнуть по заданым координатам. Всё отлично работает через Mouse_event.

Код:
  {Переместим курсор мыши}
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
  {Имитируем нажатие левой кнопки мыши}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
  {Имитируем отпускание левой кнопки мыши}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0)

Главная проблема - в том, что окно с ботом должно быть открыто. При свёрнутом в трей курсор бегает где угодно, но не там где нужно. Намутил решение через postmessage, но отчего-то работать не хочет. В чём проблема?

Код:
procedure TfrmMain.Button3Click(Sender: TObject);
var
  Pt: TPoint;
  left, top:integer;

  begin
  left:=strtoint(Edit31.Text);
  top:=strtoint(Edit32.Text);
  {Позволим кнопке перерисоваться}
  Application.ProcessMessages;
  {Найдем координаты центра button 1}
  Pt.x := WebBrowser1.Left + left;
  Pt.y := WebBrowser1.Top + top + 25; //костыль в 25 от верхней границы

    {Преобразуем Pt к координатам экрана}
  Pt := ClientToScreen(Pt);
  {Преобразуем Pt к "mickeys" (аболютным координатам курсора мышки}
  Pt.x := Round(Pt.x * (65535 / Screen.Width));
  Pt.y := Round(Pt.y * (65535 / Screen.Height));


postmessage(frmMain.WebBrowser1.Handle,WM_MOVE,0,(Pt. x shl 16)+ Pt.y);
postmessage(frmMain.WebBrowser1.Handle,WM_LBUTTONDOWN,0,(Pt. x shl 16)+ Pt.y);
postmessage(frmMain.WebBrowser1.Handle,WM_LBUTTONUP,0,(Pt.x shl 16)+ Pt.y);
Ответить с цитированием