更换桌布(50分)

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

fongling5355

Unregistered / Unconfirmed
GUEST, unregistred user!
我用以下的方法更换桌布, 但是只可以更换.bmp 的图片, 请问有办法更换.jpg 的图片吗?<br><br>SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pChar(FileListBox1.FileName), &nbsp; &nbsp;SPIF_UPDATEINIFILE);
 
首先将JPG格式文件转化为BMP格式文件,然后采用你的代码既可...我觉得ACDSee等软件更换JPG格式桌布应该也是这样实现的...
 
在注册表中的 HKEY_CURRENT_USER/Control Panel/Desktop下的ConvertedWallpaper<br>是.jpg的文件名..<br> HKEY_CURRENT_USER/Control Panel/Desktop下的OriginalWallpaper是系统自动转换的文件名..一般是&quot;C:/Documents and Settings/Administrator/Local Settings/Application Data/Microsoft/Wallpaper1.bmp&quot;<br><br>这也就是目前电脑显示桌布的文件名
 
uses<br> &nbsp;ComObj, ShlObj;<br><br>//获取当前墙纸的文件名<br>function GetCurrentDesktop: string;<br>var<br> &nbsp;ADeskTop:IActiveDesktop;<br> &nbsp;wallpaper:PwideChar;<br>begin<br> &nbsp;ADeskTop:= CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;<br> &nbsp;GetMem(wallpaper,128);<br> &nbsp;ADeskTop.GetWallpaper(wallpaper,128,0);<br> &nbsp;Result:= string(wallpaper);<br> &nbsp;FreeMem(wallpaper);<br>end;<br><br>//设置新的墙纸, 支持jpg文件<br>procedure SetNewDesktop(aImageFile: WideString);<br>var<br> &nbsp;ADeskTop:IActiveDesktop;<br>begin<br> &nbsp;ADeskTop:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;<br> &nbsp;ADeskTop.SetWallpaper(PWideChar(aImageFile), 0);<br> &nbsp;ADeskTop.ApplyChanges(AD_APPLY_ALL);<br>end;
 
向楼上学习。
 
多人接受答案了。
 
后退
顶部