E
edren
Unregistered / Unconfirmed
GUEST, unregistred user!
这是个网页快照的代码,我调试不过
停在IViewObject过不去,IViewObject是什么?麻烦热心人帮忙用D6调试一下,并给出整个代码(我需要从unit Unit1;开头到end.的整个PAS代码)
同时麻烦告诉我除了用到WebBrowser还用到什么控件,我加了MSHTML,jpeg一样是到ViewObject: IViewObject;就过不去
var
Doc: IHTMLDocument2;
ViewObject: IViewObject;
sourceDrawRect: TRect;
a, getjpg: TBitMap;
i, m: integer;
pdest, psour: hbitmap;
jpg: tjpegimage;
begin
Doc := WebBrowser.Document as IHTMLDocument2;
if Webbrowser.Document < > nil then
try
webbrowser.Document.QueryInterface(IViewObject, ViewObject);
if ViewObject < > nil then
try
Doc.Get_ParentWindow.Scroll(0, 0); //跳到网页头
getjpg := TBitMap.Create();
getjpg.PixelFormat := pf24bit;
getjpg.Height := doc.Body.getAttribute( &apos;scrollHeight &apos;, 0);
getjpg.Width := doc.Body.getAttribute( &apos;scrollwidth &apos;, 0);
pdest := getjpg.Canvas.Handle;
m := Trunc(doc.Body.getAttribute( &apos;ScrollHeight &apos;, 0) / (doc.Body.getAttribute( &apos;offsetHeight &apos;, 0) - 20));
i := Trunc(doc.Body.getAttribute( &apos;Scrollwidth &apos;, 0) / (doc.Body.getAttribute( &apos;offsetwidth &apos;, 0) - 20));
for i := 0 to i do
begin
for m := 0 to m + 1 do
begin
a := TBitMap.Create();
a.Height := doc.Body.getAttribute( &apos;offsetHeight &apos;, 0);
a.Width := doc.Body.getAttribute( &apos;offsetwidth &apos;, 0);
psour := a.Canvas.handle;
sourceDrawRect := Rect(0, 0, a.Width, a.Height);
ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Self.Handle, a.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
bitblt(pdest, doc.Body.getAttribute( &apos;scrollLeft &apos;, 0), doc.Body.getAttribute( &apos;Scrolltop &apos;, 0), a.Width, a.Height, psour, 2, 2, srccopy);
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( &apos;scrollLeft &apos;, 0), doc.Body.getAttribute( &apos;offsetHeight &apos;, 0) + doc.Body.getAttribute( &apos;Scrolltop &apos;, 0) - GetSystemMetrics(SM_CXVSCROLL) - 24);
a.Free;
end;
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( &apos;offsetwidth &apos;, 0) + doc.Body.getAttribute( &apos;scrollLeft &apos;, 0) - GetSystemMetrics(SM_CXVSCROLL) - 24, 0);
end;
jpg := tjpegimage.Create;
jpg.Assign(getjpg);
getjpg.Free;
jpg.SaveToFile( &apos;c:/test.jpg &apos;
jpg.Free;
finally
ViewObject._Release;
end;
except
end;
end;
停在IViewObject过不去,IViewObject是什么?麻烦热心人帮忙用D6调试一下,并给出整个代码(我需要从unit Unit1;开头到end.的整个PAS代码)
同时麻烦告诉我除了用到WebBrowser还用到什么控件,我加了MSHTML,jpeg一样是到ViewObject: IViewObject;就过不去
var
Doc: IHTMLDocument2;
ViewObject: IViewObject;
sourceDrawRect: TRect;
a, getjpg: TBitMap;
i, m: integer;
pdest, psour: hbitmap;
jpg: tjpegimage;
begin
Doc := WebBrowser.Document as IHTMLDocument2;
if Webbrowser.Document < > nil then
try
webbrowser.Document.QueryInterface(IViewObject, ViewObject);
if ViewObject < > nil then
try
Doc.Get_ParentWindow.Scroll(0, 0); //跳到网页头
getjpg := TBitMap.Create();
getjpg.PixelFormat := pf24bit;
getjpg.Height := doc.Body.getAttribute( &apos;scrollHeight &apos;, 0);
getjpg.Width := doc.Body.getAttribute( &apos;scrollwidth &apos;, 0);
pdest := getjpg.Canvas.Handle;
m := Trunc(doc.Body.getAttribute( &apos;ScrollHeight &apos;, 0) / (doc.Body.getAttribute( &apos;offsetHeight &apos;, 0) - 20));
i := Trunc(doc.Body.getAttribute( &apos;Scrollwidth &apos;, 0) / (doc.Body.getAttribute( &apos;offsetwidth &apos;, 0) - 20));
for i := 0 to i do
begin
for m := 0 to m + 1 do
begin
a := TBitMap.Create();
a.Height := doc.Body.getAttribute( &apos;offsetHeight &apos;, 0);
a.Width := doc.Body.getAttribute( &apos;offsetwidth &apos;, 0);
psour := a.Canvas.handle;
sourceDrawRect := Rect(0, 0, a.Width, a.Height);
ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Self.Handle, a.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
bitblt(pdest, doc.Body.getAttribute( &apos;scrollLeft &apos;, 0), doc.Body.getAttribute( &apos;Scrolltop &apos;, 0), a.Width, a.Height, psour, 2, 2, srccopy);
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( &apos;scrollLeft &apos;, 0), doc.Body.getAttribute( &apos;offsetHeight &apos;, 0) + doc.Body.getAttribute( &apos;Scrolltop &apos;, 0) - GetSystemMetrics(SM_CXVSCROLL) - 24);
a.Free;
end;
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( &apos;offsetwidth &apos;, 0) + doc.Body.getAttribute( &apos;scrollLeft &apos;, 0) - GetSystemMetrics(SM_CXVSCROLL) - 24, 0);
end;
jpg := tjpegimage.Create;
jpg.Assign(getjpg);
getjpg.Free;
jpg.SaveToFile( &apos;c:/test.jpg &apos;
jpg.Free;
finally
ViewObject._Release;
end;
except
end;
end;