Книга: Delphi. Учимся на примерах
Шутка №5 — назначение фона для Рабочего стола
Шутка №5 — назначение фона для Рабочего стола
Пятая шутка будет делать копию экрана, сохранять этот рисунок, а затем назначать его в качестве фона для Рабочего стола. Вначале в разделе implementation напишем процедуру SetWallpaper, которая будет устанавливать фоновый рисунок:
procedure SetWallpaper(sWallpaperBMPPath: String; bTile: boolean);
begin
reg:= TRegistry.Create;
reg.RootKey:= hkey_current_user;
if reg.OpenKey('Control PanelDesktop', True) then
reg.WriteString('Wallpaper', sWallpaperBMPPath); {ключ содержащий путь к bmp-файлу}
//растянуть рисунок на весь экран
reg.WriteString('TileWallpaper', '1');
with reg do begin
WriteString('Wallpaper', sWallpaperBMPPath);
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 PanelDesktop. Параметр, содержащий название рисунка, называется 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, назначаем в качестве фона Рабочего стола.
- Шутка №1 — ограничение диапазона движения мыши
- Шутка №2 — отключение кнопок мыши
- Шутка №3 — отключение клавиатуры
- Шутка №4 — очистка буфера обмена
- Шутка №5 — назначение фона для Рабочего стола
- Шутка №6 — выбор фона случайным образом
- Шутка №7 — выключение монитора
- Шутка №8 — сообщение об ошибке, содержащее "мусор"
- Шутка №9 — открытие браузера Internet Explorer
- Шутка №10 — сброс системной даты/времени
- Шутка №4 — очистка буфера обмена
- Шутка №7 — выключение монитора
- Шутка №1 — ограничение диапазона движения мыши
- 1. Назначение экспертных систем
- Глава 3 Нормативные руководящие документы, назначение и задачи информационной безопасности России
- Глава 2 Джинн из смартфона
- Как изменить оформление рабочего стола?
- 12.7.4. Переназначение клавиш на клавиатуре
- Куда пропала Корзина с Рабочего стола?
- 2.5.4. Настройка рабочего стола
- 4.1.1. Назначение прав
- 14.1.4. Защита рабочего места