
20.10.2010, 09:06
|
Начинающий
|
|
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
|
|
Перекопал кучу русскоязычных форумов - отправился за материалом в буржунет. Решение существует. Дело в том, что нужно передавать хэндл дочернего окна. А проблема - получается такая "матрёшка" что до нужного хэндла нужно докопаться.
Вот приблизительный код:
Цитата:
procedure TfrmMain.Button3Click(Sender: TObject);
var
Pt: TPoint;
left, top:integer;
Wnd:HWnd;
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 от верхней границы (PageBox)
Pt := ClientToScreen(Pt);
Pt.x := Round(Pt.x * (65535 / Screen.Width));
Pt.y := Round(Pt.y * (65535 / Screen.Height));
Wnd:=FindWindow('TfrmMain',nil);
Wnd:=FindWindowEx(Wnd,0,'TPageContol',nil);
Wnd:=FindWindowEx(Wnd,0,'Shell Embedding',nil);
Wnd:=FindWindowEx(Wnd,0,'Shell DocObject View',nil);
Wnd:=FindWindowEx(Wnd,0,'Internet Explorer_Server',nil);
Wnd:=FindWindowEx(Wnd,0,'MacromediaFlashPlayerActi veX',nil);
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);
end;
|
Меня смущает TPageContol - там вкладки две. Как на нужную вывести? Кто сможет объяснить как добраться до нужного хэндла? Вот вывод Spy++:
|