![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скриншот десктопа [D5, Win95/98]
Velocity © (2002-01-25 22:33:00)Знаю, тема старая, но! Надо бы тоже самое но без использования TBitmap.Canvas, т.е. чисто апишными ф-циями. Пишу такое...
DC:HDC;
BitMap:HBITMAP;
DC:=GetWindowDC(GetDesktopWindow);
BitMap:=CreateCompatibleBitmap(DC,GetSystemMetrics(SM_CYSCREEN),
GetSystemMetrics(SM_CXSCREEN));
BitBlt(BitMap,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),DC,0,0,SRCCOPY);
ReleaseDC(GetDesktopWindow,DC);
...и понять не могу - то ли правильным путем иду, то ли нет... в общем если все же грамотно сохранил скриншот десктопа (?), есть его хэндл - как теперь всю эту бяку в файл запихнуть? или куда-нить в память?
serjant (2002-01-28 17:11:00) [1]Функция keyb_event(vk_snapshot,1,0,0).1-фотографируем окно, 0-фотографируем десктоп.После ее вызова картинка у тебя в буфере.
Я такую прогу недавно писал, если заинтересуют подробности- пиши.
MrAngel (2002-01-28 16:51:00) [2]Так есть совет. Правда здесь будет задействован класс TBITMAP/
Замени эту строку:
BitBlt(BitMap,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),DC,0,0,SRCCOPY);
на
var BitMap:TBitmap; //а это дело сначало создай
BitBlt(BitMap.Canvas.Handle,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),DC,0,0,SRCCOPY);
Потом удали вот это:
BitMap:=CreateCompatibleBitmap(DC,GetSystemMetrics(SM_CYSCREEN),
GetSystemMetrics(SM_CXSCREEN));
Velocity (2002-01-28 06:42:00) [3]Что, никто не знает? Хммм...