关于墙纸的问题(50分)

  • 主题发起人 主题发起人 fu_qi_ming
  • 开始时间 开始时间
F

fu_qi_ming

Unregistered / Unconfirmed
GUEST, unregistred user!
用以下代码换墙纸时:
With TRegistry.Create do
Try
RootKey:=HKEY_CURRENT_USER;

If OpenKey('Control Panel/Desktop',True) then
Begin
WriteString('Wallpaper',FWallpaper); //FWallpaper为图片路径
WriteString('TileWallpaper', '0');
WriteString('WallpaperStyle', '0');
end;
CloseKey;
Finally
Free;
End;
SystemParametersInfo(spi_SetDeskWallpaper, 0, PChar(FWallpaper), SPIF_SENDCHANGE);//FWallpaper为图片路径

在98,2000下都不能直接换墙纸,在win98下运行,要刷新才显示,在win2000下运行,
先要在屏幕属性里点"确定",然后出来刷新才能显示,为什么,请教??
//FWallpaper为图片路径(图片jpg格式,不在系统路径下)
 
试一下:可以的。

Systemparametersinfo(SPI_SETDESKWALLPAPER, 0, 'c:/aaa.bmp', SPIF_UPDATEINIFILE);

UpdateKey := 'HKEY_CURRENT_USER/Control Panel/desktop';
StrPCopy(S, UpdateKey);
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETDESKWALLPAPER, integer(@S));
 
成功,但不知到底是什么原因????
 
在98下,只要关闭active桌面应该可以。
真正控制还得操纵active桌面
 
commandor在吗,到底 SPIF_UPDATEINIFILE 和 SPIF_SENDCHANGE 有什么区别?为什么直接用
SPIF_SENDCHANGE 不可以?
 
后退
顶部