Mudar papel de parede não funciona
Olá pessoal,
para mudar o papel de parede do windows via programação eu uso o seguinte código:
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:
ou mesmo em:
O programa é executado mas não muda o papel de parede. Estranho isso, o que pode ser ?? Será que alguem poderá me ajudar ??
Bye
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
Curtidas 0
Respostas
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