屏幕截图 跳出错误“Out of system resources ”
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;