Mudar papel de parede não funciona

Delphi

09/12/2004

Olá pessoal,
para mudar o papel de parede do windows via programação eu uso o seguinte código:

procedure ChangeWallpaper(bitmap: string);
var
pBitmap : pchar;
begin
bitmap:=bitmap+#0; {bitmap contém um arquivo *.bmp}
pBitmap:=@bitmap[1];
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pBitmap, SPIF_UPDATEINIFILE);
end;


Funciona normalmente, mas qdo coloco meu programa q vai alterar o papel de parede automaticamente na inicialização do windows, usando o registro na chave:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run


ou mesmo em:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run


O programa é executado mas não muda o papel de parede. Estranho isso, o que pode ser ?? Será que alguem poderá me ajudar ??

Bye


Eniorm

Eniorm

Curtidas 0

Respostas

Massuda

Massuda

09/12/2004

Após alguma pesquisa na internet, encontrei uma página da Microsoft sobre como usar SystemParametersInfo ([url=http://support.microsoft.com/kb/q97142/]link[/url], exemplos em VB). Você precisa incluir o parâmetro SPIF_SENDWININICHANGE para forçar o Windows a reler os ajustes feitos. Seu código ficaria assim:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pBitmap, SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);



GOSTEI 0
POSTAR