Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как программно заменить обои на рабочем столе

Delphi , Рабочий стол , Рабочий стол

Как программно заменить обои на рабочем столе

Автор: Igor Nikolaev aKa The Sprite

Дилетантские разговоры о компьютерах вызывают резкую тошноту влоть до приступов рвоты. Вопрос о том как поменять "обои" в 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 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;

// пример установки WallPaper по центру рабочего стола
SetWallpaper('c:\winnt\winnt.bmp', False);
//Эту строчку надо написать где-то в программе.

Программа на Delphi для изменения wallpapers в Windows!

Код, предоставленный ниже, является хорошим стартом, но есть несколько вещей, которые можно улучшить. Вот разбивка того, что код делает, и некоторые предложения по альтернативным решениям:

Что код делает:

  1. Определяет процедуру SetWallpaper, которая принимает два параметра: sWallpaperBMPPath, который является путем к новому изображению wallpapers, и bTile, которое является булевым значением, указывающим, нужно ли плитировать wallpaper.
  2. Процедура использует компонент TRegIniFile для записи значений в регистрационный ключ Control Panel\Desktop.
  3. Она записывает два значения в регистр: Wallpaper с путем к новому изображению wallpapers и TileWallpaper с значением '1' или '0', в зависимости от параметра bTile.
  4. Процедура вызывает SystemParametersInfo с действием SPI_SETDESKWALLPAPER для обновления wallpapers на рабочем столе.

Предложения по улучшению:

  1. Вместо использования TRegIniFile, рассмотрите возможность использования метода WriteString компонента Registry, который более эффективен и легче для чтения.
  2. Вместо жесткого кодирования пути регистрационного ключа, рассмотрите возможность использования константы или переменной, которая может быть легко изменена, если это нужно.
  3. Рассмотрите добавление обработки ошибок в случаях, когда изображение wallpapers не может быть найдено или операция записи в регистр fails.
  4. Если вы хотите сделать код более универсальным, рассмотрите возможность создания отдельного класса или модуля для функциональности изменения wallpapers.

Вот обновленная версия кода, которая включает некоторые из этих предложений:

program WallpaperChanger;
uses
  Registry,
  WinProcs;

const
  REG_KEY_PATH = 'Control Panel\Desktop';

procedure SetWallpaper(sWallpaperBMPPath: string; bTile: boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create(KEY_READWRITE);
  try
    reg.RootKey := HKEY_CURRENT_USER;
    reg.KeyPath := REG_KEY_PATH;

    reg.WriteString('Wallpaper', sWallpaperBMPPath);
    if bTile then
      reg.WriteString('TileWallpaper', '1')
    else
      reg.WriteString('TileWallpaper', '0');

    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil,
      SPIF_SENDWININICHANGE);

  finally
    reg.Free;
  end;
end;

begin
  SetWallpaper('c:\winnt\winnt.bmp', False);
end.

Обратите внимание, что я также удалил избыточные точки с запятой и отформатировал код для лучшей читаемости.

Поменять обои на рабочем столе в Windows можно с помощью программного кода, изменяющего соответствующие значения в реестре и вызывающего функцию SystemParametersInfo для обновления параметров рабочего стола.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Рабочий стол ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:14:11/0.0060598850250244/1