Показать сообщение отдельно
  #14  
Старый 21.10.2010, 09:08
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Получилось! Только спускать нужно было не до флешки, а до браузера. Навёл WinSpy++ на окно. Показало, что это браузер и уточнил его хэндл. Используя твою функцию и выводя промежуточные хэндлы "спустился" до нужного окна.
Код выглядит приблизительно так:
Код:
procedure TfrmMain.ClickToPage(const left: integer; const top: integer);
var
  Pt: TPoint;
  var wnd: HWND;

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


  wnd:=frmMain.WebBrowser1.Handle;
  wnd:=frmMain.GetSubChild(wnd);
  wnd:=frmMain.GetSubChild(wnd);
  //ShowMessage(inttostr(wnd)); // выдаст в десятичной то что WinSpy видит в HEX

postmessage(wnd,WM_MOVE,0,(Pt.x shl 16)+ Pt.y);
postmessage(wnd,WM_LBUTTONDOWN,0,(Pt.x shl 16)+ Pt.y);
postmessage(wnd,WM_LBUTTONUP,0,(Pt.x shl 16)+ Pt.y);
Application.ProcessMessages;

Окно свёрнуто. Активным стать не пытается. Иногда правда что-то не попадаеть, но я думаю это из-за моего остального кода. У меня случайные координаты для клика в случайное место кнопки. Я его ещё не поправил.
Ответить с цитированием