вообщем я скриншотю так
Код:
procedure Screenshot; // скриншот нужного активного окна
var
rcSrc: Trect;
hSrcWnd: HWND;
hDC1: HDC;
hSrcDC: HDC;
hBmp: HBITMAP;
tBmp: TBitmap;
begin
tBmp := TBitmap.Create;
hSrcWnd := FindWindow(nil, PChAR(sN));
GetWindowRect(hSrcWnd, rcSrc);
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);
tBmp.Handle := hBmp;
tBmp.SaveToFile('c:\000\screenshot.bmp');
DeleteObject(hBmp);
DeleteDC(hSrcDC);
ReleaseDC(hSrcWnd, hDC1);
tBmp.Free;
end;
Всё норм прикаждом тайминге прога возрастает в размерах на 4-12кб
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Screenshot;
end;
многое чё пытался ничё не помогает
Мож у вас есть варинат более правильный использывания PrintWindow