Вход/Регистрация
Delphi. Учимся на примерах
вернуться

Парижский Сергей Михайлович

Шрифт:

if bTile then begin

WriteString('TileWallpaper', '1');

end

else begin

WriteString('TileWallpaper', '0');

end;

 end;

 reg.Free;

 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE);

end;

Информацию о фоновом рисунке Рабочего стола можно найти в реестре в ветке HKEY_CURRENT_USER по пути \Control Panel\Desktop. Параметр, содержащий название рисунка, называется wallpaper. То есть, для того чтобы сменить "обои" нам необходимо изменить значение параметра wallpaper и оповестить систему о том, что были внесены изменения в реестр. Последняя строка самая важная — она обновляет системные настройки.

Функция SystemParametersInfo имеет следующие параметры:

• действие, которое необходимо выполнить (в нашем случае SPI_SETDESKWALLPAPER — установка обоев);

• зависит от значения первого параметра;

• в нашем случае — путь к файлу с рисунком;

• в последнем параметре указывается, что необходимо сделать по сле выполнения всех действий. В данном случае мы должны обновить настройки системы — для этого выбираем SPIF_SENDWININICHANGE.

Код шутки в обработчике события таймера имеет следующий вид:

ВМР1:= Graphics.TBitmap.Create;

//задаем размеры рисунка такие же,как размеры экрана

BMP1.Height:= Screen.Height;

BMP1.Width:= Screen.Width;

DC1:=GetDC(0);

//Делаем копию экрана

BitBlt(BMP1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC1, 0, 0, SRCCOPY);

Form1.Visible:= True;//восстанавливаем окно нашей программы

Image1:= TImage.Create(nil);

BMP1.IgnorePalette:= True;

Image1.Picture.Assign(BMP1);

BMP1.SaveToFile('с:\1.bmp'); //сохраняем снимок в файл 1.bmp

SetWallpaper('с:\1.bmp', False); //назначаем снимок, как фон

Repaint; //обновляем

Здесь мы делаем копию экрана, сохраняем ее в файл и, вызывая процедуру SetWallPaper, назначаем в качестве фона Рабочего стола.

Шутка №6 — выбор фона случайным образом

Раз уж мы написали процедуру, которая устанавливает фоновый рисунок, почему бы не использовать ее в нашей следующей шутке?

Шестая шутка будет заключаться в том, чтобы выбрать случайным образом рисунок из каталога Windows и сделать его фоновым:

endval:= Random(10) + 5; //для случайности выбора рисунка

//ищем все файлы с расширением *.bmp в каталоге Windows

Finds:= FindFirst('С:\Windows\*.bmp', faAnyFile, fn);

Finds:= Random(2); //случайное число, 0 или 1

//если выпала 1, то устанавливаем первый попавшийся рисунок

if Finds = 1 then SetWallpaper(fn.Name, False);

if Finds = 0 then begin //иначе…

 for i:=1 to endval do begin

Finds:= FindNext(fn); // …ищем другие рисунки

//выбираем любой другой рисунок и делаем его фоновым

if i = endval – 3 then SetWallpaper(fn.Name, False);

 end;

end;

FindClose(fn); //завершаем поиск

Здесь мы перебираем все рисунки в каталоге Windows и случайным образом выбираем один из них в качестве фонового. Затем мы устанавливаем фон с помощью ранее созданной процедуры SetWallpaper.

Шутка №7 — выключение монитора

Седьмая шутка будет выключать монитор. Для этого достаточно написать одну строку кода:

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

  • Читать дальше
  • 1
  • ...
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: