![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
вообщем я скриншотю так
Код:
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 Последний раз редактировалось Ekklesiast, 01.12.2009 в 10:40. |