Jak do TVitmap zapisać całą zawartość TWebBrowsera?
Robisz screena całego ekranu, potem odczytujesz położenie webbrowsera (ClientToScreen, zdaje się), potem wycinasz z tej bitmapy samego webbrowsera i zapisujesz, potem przesuwasz webbrowsera na dół o tyle, ile trzeba, i powtarzasz operację, a potem łączysz bitmapy. Podpowiedzi i kody do wszystkich tych operacji znajdziesz na forum i w FAQ.
EEEE tam :-/ Tak to nie żadna robota :( Zawartość MSHTML można screenować w całości za jednym razem. Jak to zrobić w TWebBrowser [???] [sciana]
Teraz nie moge przypomniec,ale gdzies tu,lub na torry.net widzialem procedure na zrut do schowka aktywnego okna
lofix napisał(a)
aktywnego okna
ale wiesz, chodzi o m$ie w moim programie, a nie m$ie by mikrozoff :)
a skad wziazc mshtml [???] moze to jest lepsze od twebbrowsera [sciana]
Popieram pomysł berl'a z tym, że nie trzeba screena całego ekranu, a wystarczy samo aktywne okno. Miałem trochę czasu, więc napisałem Ci kodzik. Mam nadzieje, że pomoże. W razie czego - pytaj.
Na formę wrzuć Image, Button [GetWebBrowserScreen] i oczywiście WebBrowser.
procedure TForm1.GetWebBrowserScreenClick(Sender: TObject);
begin
keybd_event(VK_MENU, 0, 0, 0);
keybd_event(VK_SNAPSHOT, 0, 0, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
Application.ProcessMessages;
Sleep(100);
Image.Picture.LoadFromClipboardFormat(CF_BITMAP, ClipBoard.GetAsHandle(CF_BITMAP), 0);
Clipboard.Clear;
with WebBrowser do
begin
Image.Picture.Bitmap.Canvas.CopyRect(Rect(0, 0, Width , Height), Image.Picture.Bitmap.Canvas, Rect(Left + GetSystemMetrics(SM_CYFIXEDFRAME) +1, Top + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CXFIXEDFRAME) +1, Width + Left + GetSystemMetrics(SM_CYFIXEDFRAME) +1, Height + Top + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CXFIXEDFRAME) +1));
Image.Picture.Bitmap.Height := Height;
Image.Picture.Bitmap.Width := Width;
end;
end;
Jak będzie dobre może wrzucę do FAQ'u.