
07.04.2012, 12:54
|
 |
Продвинутый
|
|
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
|
|
Код:
var
rcSrc:Trect;
hSrcWnd:HWND;
hDC1:HDC;
hSrcDC:HDC;
hBmp:HBITMAP ;
Bmp:TBitmap;
lpPoint: TPoint;
begin
GetCursorPos(lpPoint);
hSrcWnd := WindowFromPoint(lpPoint);
bmp:=TBitmap.Create;
GetWindowRect(hSrcWnd, rcSrc);
if (rcSrc.Right - rcSrc.Left < 170) and (rcSrc.Bottom - rcSrc.Top < 40) then
begin
ShowWindow(hSrcWnd, SW_SHOWNORMAL);
sleep(100);
GetWindowRect(hSrcWnd, rcSrc);
end;
hDC1:= GetDC(hSrcWnd);
hSrcDC:=CreateCompatibleDC(hDC1);
hBmp := CreateCompatibleBitmap(hDC1, rcSrc.right - rcSrc.left, rcSrc.bottom - rcSrc.top);
SelectObject(hSrcDC, hBmp);
PrintWindow(hSrcWnd, hSrcDC, 0);
BitBlt(
hDC1,
0,
0,
rcSrc.right - rcSrc.left,
rcSrc.bottom - rcSrc.top,
hSrcDC,
0,
0,
SRCCOPY);
bmp.Handle:=hbmp;
bmp.SaveToFile('c:\screen_shot.bmp');
DeleteObject(hBmp);
DeleteDC(hSrcDC);
ReleaseDC(hSrcWnd, hDC1);
bmp.Free;
Image1.Picture.LoadFromFile('c:\screen_shot.bmp');
При этом:
Код:
function PrintWindow(hwnd: HWND; hdcBlt: HDC; nFlags: UINT): BOOL; stdcall;
...
function PrintWindow; external user32 name 'PrintWindow';
__________________
Помогаю за Спасибо
|