problem ze zmianą tła pulpitu

0

Do zmiany tla pulpitu sluzy funkcja z danymi:

SystemParametersInfo(SPI_SETDESKWALLPAPER,0, pchar(''),SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);

W tym przypadku usunie tlo pulpitu. Ale dziala to mi dopiero jak uruchomie program z debugowaniem w delphi. Natomiast jak sam program uruchomie po skompilowaniu juz jako plik wynikowy nic sie nie dzieje. Czy spotkal sie juz ktos z tym problemem?

0
var
s : string;
begin
   S := 'C:\Tlo.bmp';
  SystemParametersInfo(SPI_SETDESKWALLPAPER,0, PChar(s),
  SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);

Ten kod działa
Pozdrawiam

0

Ok, ale jak usunac tabete bo na tym mi raczej zalezy. :) . Bo jest problem z tym nadal taki jaki opisalem.

0

spróbuj tak:

uses registry;

procedure ZmienTapete(tapeta: string);
var reg:TRegistry;
begin
  reg:=TRegistry.Create;
  with reg do
    try
      if OpenKey('\Control Panel\desktop', False) then begin
      reg.WriteString ('Wallpaper', tapeta) ;
      SystemParametersInfo (SPI_SETDESKWALLPAPER,0, nil,SPIF_SENDWININICHANGE) ;
      end;
    finally
      reg.Free;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject) ;
begin
  ZmienTapete('');
end;
0

Inaczej zrobilem. Ten kod powyzej gdy dasz nil to ustawia wpis na (none). Dlatego zrobilem tak:

var s:string;
begin
 s:='';
 SystemParametersInfo(SPI_SETDESKWALLPAPER,0, Pointer(@s),SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);
end.

I dziala jak powinno.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.