![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скриншот с рабочего стола. [D6, Win2k, WinXP]
wizi © (2005-01-28 11:51:00)Увожаемые мастера не подскажете ли какой процедурой(функцией)можно сделать скриншот с рабочего стола не емулируя нажатия 'PptScr'
BiN (2005-01-31 12:31:00) [1]>> Георгий Бедный
Заметь, в указанных ОС скринсэйвер запускается не на пользовательском десктопе, а на отдельном, специально для него созданном.
Георгий Бедный (2005-01-30 17:45:00) [2]Блин, ну я совсем запутался. Значит, так:
BitBlt(<хэндл канвы, на которой я рисую>, <???>, <???>, <высота рисуемого объекта>, <ширина рисуемого объекта>, <???>, <???>, <???>, <режим рисования прозрачных объектов>);
Так или нет?
kaZaNoVa (2005-01-29 20:21:00) [3]
program Project1;
uses
Windows,SysUtils, Graphics,jpeg;
function ScreenWidth:Integer;
begin
Result := GetSystemMetrics(SM_CXSCREEN);
end;
function ScreenHeight:Integer;
begin
Result := GetSystemMetrics(SM_CYSCREEN);
end;
Var bmp1: TBitmap; jpg2:TJpegImage;FileName:String;
begin
if ParamCount<1 then
begin
FileName:=Paramstr(0);
delete(FileName,Length(FileName)-3,4);
FileName:=FileName+'.jpg'
end else
FileName:=Paramstr(1);
bmp1 := TBitmap.Create;
jpg2 := TJpegImage.Create;
bmp1.Height := ScreenHeight;
bmp1.Width := ScreenWidth;
BitBlt(bmp1.Canvas.Handle, 0, 0, ScreenWidth, ScreenHeight, GetDC(GetDesktopWindow), 0, 0, SRCCopy);
jpg2.Assign(bmp1);
if ParamCount<>2 then
jpg2.CompressionQuality:=57 else
jpg2.CompressionQuality:=StrToInt(Paramstr(2));
jpg2.Compress;
jpg2.SaveToFile(FileName);
bmp1.Free; jpg2.Free;
end.
TUser (2005-01-29 20:14:00) [4]Вообще, для скриншота - можно получить картинку с рабочего стола. Где записана эта картинка - см. в примерах в интеренете на тему 'Как заменить обои на раб. столе'
TUser (2005-01-29 20:10:00) [5]
> Мне надо в скринсейвере совместить бэкграунд с картинкой
А скринсейвер не обязательно должен работать в полноэкранном режиме. Можешь рисовать просто на рабочем столе, через Canvas.Handle:=GetDC(0), только ReleaseDC потом не забудь.
Георгий Бедный (2005-01-29 13:28:00) [6]А я так и не понял: как этот BitBlt работает? Мне надо в скринсейвере совместить бэкграунд с картинкой, чтобы не видно было цвета прозрачности. Понимаю, вопрос не новый, и всех уже достал, но чёт никак не получается это правильно сделать.
Заранее благодарен.
wizi (2005-01-28 22:11:00) [7]спасибо большое
Игорь Шевченко (2005-01-28 12:13:00) [8]Bitblt