![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать скриншот экрана
Andrewtitoff © (2008-03-20 15:07:00)Здравствуйте!, у меня такой вопрос:
Как сделать скриншот экрана?, на первый взгляд задача простая, вот только когда я делаю таким образом:
procedure ScreenToJPG(filename:String);
var
bm:TBitMap;
jpg:TJPEGImage;
begin
bm:=TBitMap.Create;
bm.Width:=Screen.Width;
bm.Height:=Screen.Height;
BitBlt(bm.Canvas.Handle,0,0,bm.Width,bm.Height,GetDC(0),0,0,SRCCOPY);
jpg:=TJPEGImage.Create;
jpg.Assign(bm);
jpg.SaveToFile(filename);
jpg.Free;
bm.Free;
end;
то у меня на нем неотображается одна из форм(которая StayOnTop) и я предпологаю что при таком способе изображения из видеоплееров тоже небудет отображаться..., а нельзя ли это как нибудь сделать через видеопамять, помнится когдато давно на Паскале (правда в текстовом режиме) очень просто делалось через память, т.е. описывалиль массивы типа page0, page1, и т.д. размером в один экран по абсолютному адресу и потом уже ими манипулировали, это было очень удобно например сто бы при прорисовке окошек особенно на заднем плане изображение не моргало отрисовывалось просто все на невидимой области видеопамяти, скажем page1, а затем page0:=page1 и вуаля!...
Так вот не подскажите ли как сделать примерно тоже самое в дельфи и в графическом режиме, т.е. тупо порсто взять участок видеопамяти который отображается на мониторе и сохранить его в TBitmap ?
Kolan (2008-03-20 16:09:00) [21]Ну так делай как делал на паскале, раз разницы нет
Andrewtitoff (2008-03-20 15:59:00) [22]2 Сергей М.
И какая разница скольки задачные ОС, видеопамять то она есть и определенный ее участок все время отображается на мониторе, а все остальное предрассудки язычников высокого уровня... =)))
Andrewtitoff (2008-03-20 15:57:00) [23]2 Плохиш
Аха... =)))
2 Сергей М.
Ну так то оно так, только железо то принципиально не изменилось.., и видеопамять как была - так и осталась, а следовательно до нее как то можно добраться..., ниужели нельзя прочитать содержимое участка памяти?... =)))
Сергей М. (2008-03-20 15:52:00) [24]
> Плохиш © (20.03.08 15:43) [9]
)
Мне что ж, лекцию о драйверах режима ядра нужно было прочитать ?)
Плохиш (2008-03-20 15:43:00) [25]
> Сергей М. © (20.03.08 15:40) [8]
Помог, называется :-)) А кодер так на тебя надеялся...
Сергей М. (2008-03-20 15:40:00) [26]
> помнится когдато давно на Паскале (правда в текстовом режиме)
> очень просто делалось через память
Вспомнила бабушка как девушкой была)
На дворе уже давно многозадачныеОС)
Johnmen (2008-03-20 15:40:00) [27]Ты ещё чуть-чуть помлякай, глядишь и ответит кто...
Andrewtitoff (2008-03-20 15:37:00) [28]2 Palladin
Мля..., ты хоть сам то смотрел что там "google + как сделать скриншот экрана", или тебе вопрос до конца лень дочитать?..., везде приводятся примеры на подобии того что я привел, а я спрашитваю про видеопамять...
2 Johnmen
Ты сам то смотрел что там в ссылке которую ты дал?, или тебе тоже лень внимательно вопрос прочитать?...
Хороше, поставлю вопрос более конкретно:
Как взять видимый на мониторе участок видеопамяти и засунуть его в TBitmap?
Palladin (2008-03-20 15:25:00) [29]google + как сделать скриншот экрана
на каждом углу...
Johnmen (2008-03-20 15:19:00) [30]Может почитать чего?
Напр.
http://www.delphisources.ru/pages/faq/base/click_print_screen.html
Andrewtitoff (2008-03-20 15:11:00) [31]Точнее не его туда, а ее в него...
Andrewtitoff (2008-03-20 15:11:00) [32]Мля..., да я и не говорил что он там лежит..., я спрашиваю как его туда засунуть....
Johnmen (2008-03-20 15:08:00) [33]С чего ты взял, что в видеопамяти лежит TBitmap? :)))