Másik applikációról kép

Képet készíthetünk egy másik alkalmazásról, ha tudjuk az osztály-nevét, vagy az ablak-nevét. A lenti példában az sem számít, ha az a bizonyos alkalmazás háttérben van, és nem látszik, lényeg, hogy ne legyen kisméretben lent a tálcán, mert akkor nincs ablak. A kipróbáláshoz indítsd el a számológépet.

function PrintWindow( hwnd: HWND; hdcBlt: HDC; nFlags: UINT ): BOOL; stdcall; external 'user32.dll';


procedure TForm1.Button1Click(Sender: TObject);
const
PW_CLIENTONLY = 0;
var
bmp: TBitmap;
h: THandle;
r: TRect;

begin
h := FindWindow( nil, 'Számológép' );
if h = 0 then
exit;
bmp := TBitmap.Create;
try
GetWindowRect( h, r );
bmp.Width := r.Right - r.Left;
bmp.Height := r.Bottom - r.Top;
bmp.PixelFormat := pf24bit;
PrintWindow( h, bmp.Canvas.Handle, PW_CLIENTONLY );
Image1.Width := bmp.Width;
Image1.Height := bmp.Height;
Image1.Picture.Bitmap.Assign( bmp );
finally
bmp.Free;
end;
end;