还是区域截图的问题
我的想法是本地载入一张图片 可以是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;
我的想法是本地载入一张图片 可以是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;
解决方案 »
- 请问各位高手如何读写其它进程的内存?200分献上!!解答马上给分!!
- 在XLGrid中如何用程序实现动态的合并单元格,如何将cell的内容竖直显示?
- 求助!!查询后的数据集怎么保存在SQLServer数据库中,在怎样读取出来?(解决后马上给分!)
- 简单问题:在DirectDraw中Flip是不是只可以切换BACKBUFFER页面,不可以切换OFFSCREENPLAIN页面?
- 我能通过局域网上intert,但我打不开网上邻居,且不能访问其它网上机器,现请教各路高手!
- 求XP Group控件包下載地址?
- 将字符(如:名字,年龄,年月等)转化为16进制该怎么转???
- 谁有DBTreeView控件?收到马上送50分!
- 字段内容太长,如何在报表中让他自动换行!谢谢,小弟急用!
- 三层中用socketconnection连接,客户端要分发哪些dll
- 熟悉报表的请进
- 自动登录网站问题
var
DC : HDC;
hWindow , h : THandle;
Canvas : TCanvas;
begin
hWindow := GetWindow(WebBrowser1.Handle , GW_CHILD);
h := GetWindow(hWindow, GW_CHILD);
if h<>0 then hWindow := H;
Canvas := TCanvas.Create;
DC := GetDC(hWindow);
Canvas.Handle := DC;
//使用Canvas作事
Self.Canvas.CopyRect(Rect(0,0,200,200) , Canvas , Rect(50,50,250,250));
//释放
ReleaseDC(hWindow , DC);
Canvas.Free;
end;个人感觉XP下应该可行,没作试验,楼主自己试验一下,其实就是加了个判断....
procedure tform1.snapscreenzd( swj:string ; a,b,c,d:Integer);
var
bmpscreen:Tbitmap;
jpegscreen:Tjpegimage;
FullscreenCanvas:TCanvas;
dc:HDC;
sourceRect, destRect: TRect;
hWindow , h : THandle;
begin
try
//dc:=///GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD);
///dc:=getdc(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD));
//dc:=getdc(getdc(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD)));
hWindow := GetWindow(WebBrowser1.Handle , GW_CHILD);
h := GetWindow(hWindow, GW_CHILD);
if h<>0 then hWindow := H;
dc:=getdc(hWindow);
///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(hWindow, DC);
except
end;
end;