procedure CaptureScreen(AFileName: string);
const
CAPTUREBLT = $40000000;
var
hdcScreen: HDC;
hdcCompatible: HDC;
bmp, bmp1: TBitmap;
png: TPNGObject;
hbmScreen: HBITMAP;
begin
hdcScreen := CreateDC('DISPLAY', nil, nil, nil);
hdcCompatible := CreateCompatibleDC(hdcScreen);
hbmScreen := CreateCompatibleBitmap(hdcScreen, GetDeviceCaps(hdcScreen, HORZRES), GetDeviceCaps(hdcScreen, VERTRES));
SelectObject(hdcCompatible, hbmScreen);
bmp := TBitmap.Create;
bmp1 := TBitmap.Create;
png := TPNGObject.Create;
bmp.Handle := hbmScreen;
BitBlt(hdcCompatible, 0, 0, bmp.Width, bmp.Height, hdcScreen, 0, 0, SRCCOPY or CAPTUREBLT);
bmp1.Assign(bmp);
// bmp.SaveToFile('1');
bmp1.PixelFormat := pf8bit;
png.Assign(bmp1);
png.SaveToFile(AFileName);
bmp1.Free;
bmp.Free;
png.Free;
DeleteDC(hdcScreen);
DeleteDC(hdcCompatible);
end;
uj5u.com熱心網友回復:
不注釋掉// bmp.SaveToFile('1'); 就會跳出“Out of system resources ” 求大神指點uj5u.com熱心網友回復:
這代碼寫的...
procedure CaptureScreen(const AFileName: string);
var
H: THandle;
P: TPNGImage;
begin
H := GetDC(0);
P := TPNGImage.CreateBlank(COLOR_RGB, 8, Screen.Width, Screen.Height);
BitBlt(P.Canvas.Handle, 0, 0, P.Width, P.Height, H, 0, 0, SRCCOPY);
ReleaseDC(0, H);
P.SaveToFile(AFileName);
P.Free;
end;
uj5u.com熱心網友回復:
你這是“系統資源外溢“!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/32570.html
