首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

截图有关问题,黑屏

2013-02-05 
截图问题,黑屏!procedure ScreenCap(LeftPos,TopPos,RightPos,BottomPos:integer)varRectWidth,RectHeigh

截图问题,黑屏!
procedure ScreenCap(LeftPos,TopPos,RightPos,BottomPos:integer);
var
  RectWidth,RectHeight:integer;
  SourceDC,DestDC,Bhandle:integer;
  Bitmap:TBitmap;
  Stream:TMemoryStream;
begin
  RectWidth:=RightPos-LeftPos;
  RectHeight:=BottomPos-TopPos;
  SourceDC:=CreateDC('DISPLAY','','',nil);
  DestDC:=CreateCompatibleDC(SourceDC);
  Bhandle:=CreateCompatibleBitmap(SourceDC,RectWidth,RectHeight);
  SelectObject(DestDC,Bhandle);
  BitBlt(DestDC,0,0,RectWidth,RectHeight,SourceDC,LeftPos,TopPos,SRCCOPY);
  Bitmap:=TBitmap.Create;
  Bitmap.Handle:=BHandle;
  Stream := TMemoryStream.Create;
  Bitmap.SaveToStream(Stream);
  Bitmap.PixelFormat := pf24bit;
  Stream.Free;
  try
    FORM1.Image1 .Picture .Bitmap :=Bitmap;
    Bitmap.SaveToFile('C:\Documents and Settings\'+pchar(GetCurrentUserName)+'\桌面\2.bmp');
  finally
    Bitmap.Free;
    DeleteDC(DestDC);
    ReleaseDC(Bhandle,SourceDC);
  end;
end;

用上面这个函数能正常截图,但是我如果切换电脑用户时(WIN+L)他截出来的就是黑色的,
请问各位大大们有没有办法让他不黑屏!
[解决办法]
OpenInputDesktop
GetUserObjectInformation
CreateProcessAsUser

热点排行