Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 

Re: Hintergrundbild ändern

  Alt 28. Okt 2003, 16:36
Mach dir nix draus. Bin ja selbst nicht fehler-resistent. Die Prozedur "ChangeWallpaper" (die aus meinem Programm, meine ich!) sollte besser so aussehen:
Delphi-Quellcode:
procedure ChangeWallpaper(const szFilename: string);
var
  oleres : HRESULT;
  actdesk : IActiveDesktop;
  compopt : TComponentsOpt;
  dwReserved : dword;
begin
  actdesk := CreateComObject(CLSID_ActiveDesktop,oleres) as IActiveDesktop;
  if(oleres = S_OK) then begin
    ZeroMemory(@compopt,sizeof(compopt));
    compopt.dwSize := sizeof(compopt);
    dwReserved := 0;
    actdesk.GetDesktopItemOptions(compopt,dwReserved);

    // Active Desktop ist aktiv
    if(compopt.fActiveDesktop) then begin
      actdesk.SetWallpaper(pwidechar(widestring(szFilename)),0);
      actdesk.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);

      exit;
    end
  end;

  // im Fehlerfall, bzw. ohne Active Desktop
  SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pointer(szFilename),
    SPIF_SENDWININICHANGE);
end;
  Mit Zitat antworten Zitat