Показать сообщение отдельно
  #3  
Старый 07.04.2012, 12:54
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 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';
__________________
Помогаю за Спасибо
Ответить с цитированием