getdc得到句柄以后截图为什么一直是桌面的截图

Delphi小叮当 2012-10-08 10:03:14
getdc得到句柄以后截图为什么一直是桌面的截图
我希望可以后台通过句柄的范围截图
为什么不管 dc:=getdc 还是 dc:=getwindowDc 一直截图 都是 截图桌面 而不是控件的句柄的范围截图呢
难道是句柄抓取的不对? 但是我尝试 form1.handle 或者 form1.webbrowser.handle 一直也是截取桌面的图片

求解答 感谢 感谢

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;
...全文
575 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码跳动 2012-10-16
  • 打赏
  • 举报
回复
另外句柄为0就是桌面,对于其它程序应该是要窗体句柄,让后根据窗体设置坐标;似乎不能具体到控件(这个我也没刻意试过)。
代码跳动 2012-10-16
  • 打赏
  • 举报
回复
截取当前用户桌面是没问题的,
1.程序当前是否运行在活动用户桌面。 意思是你要放到系统进程 system来运行的话,那始终截取不到,当然这个不是你现在的问题;
2.后台截图是不行的,目前来说应该什么win系统(2000/xp/2003/7)都不支持, 只有窗体活动最前才可以截取,这个win系统都不支持
fbiboss 2012-10-12
  • 打赏
  • 举报
回复
期待有人回答 mark
vvvyinlei 2012-10-09
  • 打赏
  • 举报
回复
一个截图程序的完整代码你要不要?
要的话找我
Delphi小叮当 2012-10-09
  • 打赏
  • 举报
回复
请问你的操作系统是?

我在公司 win7 是可以 但是回家 XP 就不可以了 这是什么情况~[Quote=引用 3 楼 的回复:]

我测试没有问题
[/Quote]
Delphi小叮当 2012-10-09
  • 打赏
  • 举报
回复
我在公司 win7也没问题 在家xp 就不行 这是神马情况?[Quote=引用 3 楼 的回复:]

我测试没有问题
[/Quote]
Delphi小叮当 2012-10-09
  • 打赏
  • 举报
回复
如果是webbrowser 区域截图的 谢谢请发我 308669239@qq.com [Quote=引用 2 楼 的回复:]

一个截图程序的完整代码你要不要?
要的话找我
[/Quote]
bdmh 2012-10-09
  • 打赏
  • 举报
回复
我测试没有问题
jnxdf0102 2012-10-09
  • 打赏
  • 举报
回复
期待有人回答 mark
Delphi小叮当 2012-10-08
  • 打赏
  • 举报
回复
fullscreencanvas.Handle:=dc; 这一句 如果用

Tcanvas 这个类载入本地的图片也是可以的 但是我不知道Tcanvas 这个类怎么载入本地的图片???

1,185

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧