屏幕截图 跳出错误“Out of system resources ”

xishipachong 2018-11-26 04:47:51
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;
...全文
1484 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2019-02-13
  • 打赏
  • 举报
回复
你这是“系统资源外溢“!
  • 打赏
  • 举报
回复
这代码写的...


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;

xishipachong 2018-11-26
  • 打赏
  • 举报
回复
不注释掉// bmp.SaveToFile('1'); 就会跳出“Out of system resources ” 求大神指点

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧