uchwyt otwartej strony w WB

0

Jak pobrać uchwyt otwartej przez Navigate strony w WebBrowser?
WebBrowser1.Handle, to uchwyt całego komponentu, a ja potrzebuję uchwyt otwartej stronki.

0

Uchwyt otwartej stronki? Pierwsze słysze...

0

No wlasnie.. nie wiedzialem ze cos takiego istnieje...

Ale wiesz, jest takie bardzo fajne cuś jak WebBrowser1.Document.OleObject - na tym tez mozesz duzo zrobic :)

0

Uchwyt do okna, do procesu, do pliku... - owszem, ale do STRONY ???

0

hmmmmm to może kodzik i wyjaśnie o co chodzi :)
Chcę sobie zablokować pojawiające się menu po kliknięciu PPM na webbrowsera.

procedure TForm1.MessageLoop(var Msg: TMsg; var Handled: Boolean);
var
mouse:Tpoint;
begin
if msg.hwnd = webbrowser1.Handle then <== tu potrzeba uchwyt stronki
begin
if (Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)
then begin
handled:=True;
getcursorpos(Mouse);
popupmenu1.popup(Mouse.x,Mouse.y);
end
else Handled := False; //not rbutton
end
else
Handled := false; //not webbrowser msg
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnMessage := messageloop;
end;

Potrzebny jest taki uchwyt, bo inaczej, jak nie robie Navigate jest wsio OK, ale wystarczy że coś otworzę, i już msg.HWND i webbrowser1.handle nie są równe.

0

W Windows uchwyt ma wszystko do czego coś się może odwołać, tak więc strona go nie potrzebuje, bo stroną jest tak jakby TWebBrowser, to w nim przechowywane są informacje itd i to on jest punktem wyjścia. Tak więc do operacji potrzebny jest tylko uchwyt TWebBrowsera, a potem to już operuje się na właściwościach i funkcjach, a przypadkiem, czy Twoja procedurka nie mogłaby właśnie działać na handlu WebBrowsera?? przeciez to na jedno wychodzi.

0

No właśnie nie wychodzi na jedno, bo sprawdzałem.
Jeśli chodzi o uchwyt to to okno musi jakiś mieć , ponieważ gdy wykonuję funkcję WindowFromPoint(współrzędne myszki) i najadę na to okno, to w rezultacie jest uchwyt, ale inny, niz ten jaki był przed Navigate w Webbrowserze. I Właśnie chodzi mi o to, zeby jakoś to odczytać, bo raczej odczytywanie przez WindowFromPoint bedzie trochę kłopotliwe, aczkolwiek możliwe :)

Jednym słowem, rezultat funkcji WindowFromPoint(współrzędne myszki) odczytyny w tym samym położeniu myszy przed Navigate i po Navigate jest inny.

0

EnumChildWindows - parentem jest uchwyt TWebBrowsera
lub
FindWindow + FindWindowEx
albo jedno i drugie

0

No poradziłem sobie (wreszcie). Jak ktoś zaintersowany, to uchwyt strony to to co się pojawi w showmessage :

procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
begin
i := (FindWindowex(form1.Handle, 0, PChar('Shell Embedding') , nil));
i := ( FindWindowEx(i, 0, 'Shell DocObject View', nil )) ;
showmessage(inttostr( FindWindowEx(i, 0, 'Internet Explorer_Server', nil ))) ;
end;

PS: Można to zapisać jakoś krócej?

1 użytkowników online, w tym zalogowanych: 0, gości: 1