| 
			
			 
			
				18.10.2010, 19:13
			
			
			
		 | 
	| 
		
			
			| Начинающий |  | 
					Регистрация: 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);
			
			
			
			
				  |