Дилетантские разговоры о компьютерах вызывают резкую тошноту влоть до приступов рвоты. Вопрос о том как поменять "обои" в Windows вызывает желание перерезать горло вопрошающему.
program wallpapr;
uses Registry, WinProcs;
procedure SetWallpaper(sWallpaperBMPPath: string; bTile: boolean);
var
reg: TRegIniFile;
begin// Изменяем ключи реестра// HKEY_CURRENT_USER// Control Panel\Desktop// TileWallpaper (REG_SZ)// Wallpaper (REG_SZ)
reg := TRegIniFile.Create('Control Panel\Desktop');
with reg dobegin
WriteString('', 'Wallpaper',
sWallpaperBMPPath);
if (bTile) thenbegin
WriteString('', 'TileWallpaper', '1');
endelsebegin
WriteString('', 'TileWallpaper', '0');
end;
end;
reg.Free;
// Оповещаем всех о том, что мы изменили системные настройки
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil,
{Эта строка - продолжение предыдущей} SPIF_SENDWININICHANGE);
end;
// пример установки WallPaper по центру рабочего стола
SetWallpaper('c:\winnt\winnt.bmp', False);
//Эту строчку надо написать где-то в программе.
Программа на Delphi для изменения wallpapers в Windows!
Код, предоставленный ниже, является хорошим стартом, но есть несколько вещей, которые можно улучшить. Вот разбивка того, что код делает, и некоторые предложения по альтернативным решениям:
Что код делает:
Определяет процедуру SetWallpaper, которая принимает два параметра: sWallpaperBMPPath, который является путем к новому изображению wallpapers, и bTile, которое является булевым значением, указывающим, нужно ли плитировать wallpaper.
Процедура использует компонент TRegIniFile для записи значений в регистрационный ключ Control Panel\Desktop.
Она записывает два значения в регистр: Wallpaper с путем к новому изображению wallpapers и TileWallpaper с значением '1' или '0', в зависимости от параметра bTile.
Процедура вызывает SystemParametersInfo с действием SPI_SETDESKWALLPAPER для обновления wallpapers на рабочем столе.
Предложения по улучшению:
Вместо использования TRegIniFile, рассмотрите возможность использования метода WriteString компонента Registry, который более эффективен и легче для чтения.
Вместо жесткого кодирования пути регистрационного ключа, рассмотрите возможность использования константы или переменной, которая может быть легко изменена, если это нужно.
Рассмотрите добавление обработки ошибок в случаях, когда изображение wallpapers не может быть найдено или операция записи в регистр fails.
Если вы хотите сделать код более универсальным, рассмотрите возможность создания отдельного класса или модуля для функциональности изменения wallpapers.
Вот обновленная версия кода, которая включает некоторые из этих предложений:
Обратите внимание, что я также удалил избыточные точки с запятой и отформатировал код для лучшей читаемости.
Поменять обои на рабочем столе в Windows можно с помощью программного кода, изменяющего соответствующие значения в реестре и вызывающего функцию SystemParametersInfo для обновления параметров рабочего стола.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.