윈도 핸들을 이용하여 해당창의 이미지를 비트맵으로 얻어오는 함수입니다.
뉴스그룹에 올라온 내용을 가져왔습니다.
function PrintWindow(aHwnd: HWND; aBitmap: TBitmap): Boolean;
var
rc: TRect;
huser32: THandle;
F: function(Hnd: HWND; HdcBlt: HDC; nFlags: UINT): BOOL; stdcall;
begin
Result := False;
huser32 := GetModuleHandle(user32);
if huser32 <> 0 then begin
@F := GetProcAddress(huser32, 'PrintWindow');
if @F <> nil then begin
GetWindowRect(aHwnd, rc);
aBitmap.Width := rc.Right - rc.Left;
aBitmap.Height := rc.Bottom - rc.Top;
aBitmap.Canvas.Lock;
try
Result := F(aHWnd, aBitmap.Canvas.Handle, 0);
finally
aBitmap.Canvas.Unlock;
end;
end;
end;
end;
|