后台区域截图的问题
还是区域截图的问题
我的想法是
本地载入一张图片 可以是image控件或者是其他的 然后在后台区域截图
但是怎么才能做到后台区域截图 不是直接在webb里面截图了
用区域截图的函数 用下面的函数 虽然句柄写正确以后 但是 在xp的电脑上 还是截图是屏幕的不是后台的程序的控件的截图
而在vin7的电脑上却可以 求改正代码 个人觉得下面的代码好像只能截图屏幕的截图 而不能后台截图
后没有后台区域截图的函数呢
var
bmpscreen:Tbitmap;
jpegscreen:Tjpegimage;
FullscreenCanvas:TCanvas;
dc:HDC;
sourceRect, destRect: TRect;
begin
try
//dc:=///GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD);
dc:=GetWindowDC(form1.Handle);
//dc:=getdc(getdc(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD)));
// dc:=getdc(form1.webbrowser1.Handle);
///showmessage(inttostr(dc)) ;
fullscreencanvas:=Tcanvas.Create;
fullscreencanvas.Handle:=dc;
bmpscreen:=Tbitmap.create;
bmpscreen.Width :=c-a;
bmpscreen.Height :=d-b;
sourcerect:=rect(0,0,c-a ,d-b );
destrect:= rect(a,b,c,d);
bmpscreen.Canvas.CopyRect(sourcerect,fullscreenCanvas,destrect);
jpegscreen:=Tjpegimage.Create ;
jpegscreen.Assign (bmpscreen);
jpegscreen.CompressionQuality:=100;
//jpegscreen.SaveToFile(pchar('c:\'+swj));
jpegscreen.SaveToFile(pchar(ExtractFilePath(ParamStr(0))+swj));
FullscreenCanvas.Free;
bmpscreen.Free;
jpegscreen.Free ;
ReleaseDC(0, DC);
except
end;
end;
[解决办法]
如果用getdc 最小化的窗口不行. 换个思路设置程序窗口坐标为-1000这样的, 让他跑到桌面外面去,截图后,恢复再最小化。