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;

解决方案 »

  1.   

    fullscreencanvas.Handle:=dc;  这一句 如果用Tcanvas 这个类载入本地的图片也是可以的 但是我不知道Tcanvas 这个类怎么载入本地的图片???
      

  2.   

    如果是webbrowser 区域截图的 谢谢请发我  [email protected] 
      

  3.   

    我在公司 win7也没问题 在家xp 就不行 这是神马情况?
      

  4.   

    请问你的操作系统是? 我在公司 win7 是可以 但是回家 XP 就不可以了  这是什么情况~
      

  5.   

    截取当前用户桌面是没问题的,
    1.程序当前是否运行在活动用户桌面。  意思是你要放到系统进程 system来运行的话,那始终截取不到,当然这个不是你现在的问题;
    2.后台截图是不行的,目前来说应该什么win系统(2000/xp/2003/7)都不支持, 只有窗体活动最前才可以截取,这个win系统都不支持