السلام عليكم
هذا برنامج بسيط لنسخ الشاشة - نفس عمل الزر Print Screen مأخوذ من مثال مكتوب بالسي في MSDN . طبعاً قمت باختصاره بشكل كبير حيث أن المثال به خيارات لنسخ نافذة فقط وهو مكون من عدة دوال أما هذا البرنامج ينسخ كامل الشاشة الى الحافظة ويقوم أيضاً بحفظها كملف jpg على القرص . للاستزاده راجع MSDN - يوجد أيضاً مثال شبيه في فيجوال بيسك .
program CopyScreen;
uses
Windows, Graphics, Jpeg, Clipbrd, Forms ;
var
ScrDC,MemDC : HDC;
hbmp,hOldbmp : HBitmap;
nWidth, nHeight : integer;
TBmp : TBitmap;
jpg : TJpegImage;
begin
ScrDC := CreateDC('Display',NIL,NIL,NIL);
MemDC := CreateCompatibleDC(ScrDC);
nWidth := Screen.Width;
nHeight := Screen.Height;
hbmp := CreateCompatibleBitmap(ScrDC,nWidth,nHeight);
hOldbmp := SelectObject(MemDC, hbmp);
BitBlt(MemDC,0,0,nWidth,nHeight,ScrDC,0,0,SRCCOPY);
hbmp := SelectObject(MemDC,hOldbmp);
TBmp := TBitmap.Create;
TBmp.Handle := hbmp;
Clipboard.Assign(TBmp);
jpg := TJpegImage.Create;
jpg.Assign(TBmp);
jpg.SaveToFile('MyScreen.jpg');
TBmp.Free;
jpg.Free;
DeleteDC(ScrDC);
DeleteDC(MemDC);
end.