如何把当前屏幕的画面图像写入一个form中? 如何把当前屏幕的画面图像写入一个form中? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure ScreenShot(activeWindow: bool; destBitmap : TBitmap) ;var w,h : integer; DC : HDC; hWin : Cardinal; r : TRect;// var// b:TBitmap;//begin//// b := TBitmap.Create;//// try//// ScreenShot(False, b) ;//// Image1.Picture.Bitmap.Assign(b) ;//// finally//// b.FreeImage;//// FreeAndNil(b) ;begin if activeWindow then begin hWin := GetForegroundWindow; dc := GetWindowDC(hWin) ; GetWindowRect(hWin,r) ; w := r.Right - r.Left; h := r.Bottom - r.Top; end else begin hWin := GetDesktopWindow; dc := GetDC(hWin) ; w := GetDeviceCaps (DC, HORZRES) ; h := GetDeviceCaps (DC, VERTRES) ; end; try destBitmap.Width := w; destBitmap.Height := h; BitBlt(destBitmap.Canvas.Handle, 0, 0, destBitmap.Width, destBitmap.Height, DC, 0, 0, SRCCOPY) ; finally ReleaseDC(hWin, DC) ; end;end;procedure UnCompressStream( var memStream: TMemoryStream );var SourceStream: TDecompressionStream; DestStream: TMemoryStream; Buffer: PChar; Count: Integer;ss: TDateBegin memStream.ReadBuffer(Count, SizeOf(Count)); GetMem(Buffer, Count); DestStream := TMemoryStream.Create; SourceStream := TDecompressionStream.Create(memStream); Try SourceStream.ReadBuffer(Buffer^, Count); DestStream.WriteBuffer(Buffer^, Count); DestStream.Position := 0; memStream.Clear ; memStream.CopyFrom(DestStream, 0) ; finally FreeMem(Buffer); DestStream.Free; end;end;http://delphi.about.com/od/adptips2006/qt/captureactive.htm procedure UnCompressStream( var memStream: TMemoryStream ); 多贴了.. 【菜鸟问题100分】为什么捕捉不到数据库连接异常 如何当一个好的程序员? spcomm问题请教 关于kfc排班! 关于如何用socket接收行情数据 认识我的,不认识我的,都来接分! 如何获得DataGrid选中的行的行号 请问如何做类似 Dreamweaver 的网页编辑区?就是插入图片就立刻显示! Delphi5中的分布式(DCOM连接)问题 哪位大神有 Delphi in Depth ClientDataSets 2nd Edition 如何代码控制,让光标到DbGridEh中某一Cell 如何声明一个全局变量,可以在应用的任何单元引用
var
w,h : integer;
DC : HDC;
hWin : Cardinal;
r : TRect;
// var
// b:TBitmap;
//begin
//// b := TBitmap.Create;
//// try
//// ScreenShot(False, b) ;
//// Image1.Picture.Bitmap.Assign(b) ;
//// finally
//// b.FreeImage;
//// FreeAndNil(b) ;
begin if activeWindow then
begin
hWin := GetForegroundWindow;
dc := GetWindowDC(hWin) ;
GetWindowRect(hWin,r) ;
w := r.Right - r.Left;
h := r.Bottom - r.Top;
end
else
begin
hWin := GetDesktopWindow;
dc := GetDC(hWin) ;
w := GetDeviceCaps (DC, HORZRES) ;
h := GetDeviceCaps (DC, VERTRES) ;
end; try
destBitmap.Width := w;
destBitmap.Height := h;
BitBlt(destBitmap.Canvas.Handle,
0,
0,
destBitmap.Width,
destBitmap.Height,
DC,
0,
0,
SRCCOPY) ;
finally
ReleaseDC(hWin, DC) ;
end;
end;procedure UnCompressStream( var memStream: TMemoryStream );
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: Integer;ss: TDate
Begin
memStream.ReadBuffer(Count, SizeOf(Count));
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(memStream); Try
SourceStream.ReadBuffer(Buffer^, Count);
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;
memStream.Clear ;
memStream.CopyFrom(DestStream, 0) ;
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;
http://delphi.about.com/od/adptips2006/qt/captureactive.htm
多贴了..