![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Картинка с экрана [D7, WinXP]
ZMRaven © (2008-02-01 09:19:00)Как взять картинку с экрана?
нашёл такое как Screen - имеет много удобных параметров,
Monitor у них даже DesktopRect можно найти и при этом с него ничего не скопируешь.
подскажите как быть?
New (2008-02-04 04:49:00) [1]
var
Bitmap: TBitmap;
DC: HDC;
begin
Bitmap:= TBitmap.Create;
Bitmap.Width:= Screen.Width;
Bitmap.Height:= Screen.Height;
DC:= GetDC(0);
BitBlt(Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, DC, 0, 0, SRCCOPY);
Image1.Canvas.StretchDraw(Image1.Canvas.ClipRect, Bitmap);
Bitmap.Free;
ReleaseDC(0, DC);
homm (2008-02-01 14:31:00) [2]> [6] ketmar © (01.02.08 13:00)
Не демпингуй. Тебе откат будет в случае чего :)
ketmar (2008-02-01 13:00:00) [3]>напишите ваш вариант?
$30.
ZMRaven (2008-02-01 12:48:00) [4]homm, ошибки это плохо - понятно.
напишите ваш вариант?
homm (2008-02-01 11:43:00) [5]> [3] bioSerg (01.02.08 11:11)
> А ресурсы освобождать нужно где-то дальше, каюсь написал
> лишнего :)
И как же ты собрался освободить рессурс, который ты получил и сразу передл в функцию, не оставив даже указателя на него?
bioSerg (2008-02-01 11:11:00) [6]:)
h := FindWindow(PChar('ProgMan'), nil);
h := GetWindow(h, GW_CHILD);
h := GetWindow(h, GW_CHILD); // получаем Handle рабочего стола
bmp1:=TBitMap.Create;
bmp1.Width:=Screen.Monitors[n].Width;
bmp1.Height:=Screen.Monitors[n].Height;
bmp1.PixelFormat:=pf32bit;
with Screen.Monitors[n] do
BitBlt(bmp1.Canvas.Handle, 0, 0, Width, Height, GetDC(h), Left-Screen.DesktopLeft, Top, SRCCOPY);
// здесь твоя работа с картинкой (отправка, сохранение и т.д.)
bmp1.Free;
А ресурсы освобождать нужно где-то дальше, каюсь написал лишнего :)
homm (2008-02-01 10:54:00) [7]> [1] bioSerg (01.02.08 10:04)
> BitBlt(bmp1.Canvas.Handle, 0, 0, Width, Height,
> GetDC(h)
> , Left-Screen.DesktopLeft, Top, SRCCOPY);
Да Вы, бательна, шутник! Кто рессурсы потом освобождать будет и что такое h ?
bioSerg (2008-02-01 10:04:00) [8]:)
bmp1:=TBitMap.Create;
bmp1.Width:=Screen.Monitors[n].Width;
bmp1.Height:=Screen.Monitors[n].Height;
bmp1.PixelFormat:=pf32bit;
bmp2:=TBitMap.Create;
bmp2.Width:=Screen.Monitors[n].Width div k;
bmp2.Height:=Screen.Monitors[n].Height div k;
bmp2.PixelFormat:=pf32bit;
with Screen.Monitors[n] do
BitBlt(bmp1.Canvas.Handle, 0, 0, Width, Height,
GetDC(h), Left-Screen.DesktopLeft, Top, SRCCOPY);
у меня спросить не мог?