デスクトップの壁紙を変更する

壁紙を変更するにはSystemParametersInfo関数を使用します。この関数の第一引数にSPI_SETDESKWALLPAPERを設定し、第三引数に壁紙にしたいファイル名を指定します。第四引数には通常はSPIF_UPDATEINIFILEを設定し、変更した壁紙(ファイル名)がレジストリに書き込まれるようにします。壁紙を非表示にしたい場合、ファイル名の変わりにnilを渡します。ただし、nilを渡した場合は関数を二回呼び出すか、レジストリに保存されている壁紙のファイル名をクリアしてから呼び出す必要があります。

function ChangeWallpaper(const FileName: String): Boolean;
//壁紙を変更
begin
  Result := SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
              PChar(FileName), SPIF_UPDATEINIFILE);
end;


function ChangeWallpaperEx(const FileName: String): Boolean;
//壁紙のクリアもできる壁紙変更関数
begin
  if FileName = '' then
  begin
    with TRegistry.Create do
    begin
      try
        RootKey := HKEY_CURRENT_USER;
        if OpenKey('Control Panel\desktop', False) then
          WriteString('Wallpaper', '');
        CloseKey;
      finally
        Free;
      end;
    end;
    Result := SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, 0);
  end else
    Result := SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
                PChar(FileName), SPIF_UPDATEINIFILE);
end;

Copyright 2001 Rinka Kouzuki All Rights Reserved.