Fórum Mudar papel de parede não funciona #261227

09/12/2004

0

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

Responder

Posts

09/12/2004

Massuda

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);



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar