微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题用Delphi实现壁纸更换
栏目软件世界
发布1999年第11期13版
  在Windows95/98中,都是使用注册表对系统数据进行管理,有关壁纸的设置数据保存在Hkey_Current_User\Control Panel\Desktop的Wallpaper和TileWallpaper等键值中,只要成功修改了这两个键值,然后发消息给Windows即可更换壁纸。在本例的程序中,使用了一个Tform;两个Tspeedbutton(Speedbutton1用于接受用户的浏览命令,Speedbutton2用于接受用户的更换壁纸命令);一个Timage(用于显示图片)。另外,还用到一组文件控件:Tfilelistbox,Tdrivecombobox,Tdirectorylistbox,用于选择图片文件,可以设置FileListBox的mask属性,筛选显示在FileListBox中的文件类型(如只显示.bmp文件)。下面的两个程序段是实现浏览图片和更换壁纸的关键代码。
  Procedure Tform1.SpeedButton1Click(Sender:Tobject);
  Begin
  If (filelistbox1.FileName='') Then {判断Filelistbox1中文件有没有被选中}
  Messagedlg('请先选择一幅位图',mtInformation,[mbOK],0)
  Else
  Image1.Picture.LoadFormFile(Filelistbox1.FileName);{加载图片文件并显示}
  End;
  ProcedureTform1.SpeedButton2Click(Sender:TObject);
  Var Reg:Tregistry;{Tregistry 对象在Registry
  单元中声明,需用Uses令引用Registry单元}
  }
  Begin
  If (Filelistbox1.FileName='') Then
  Messagedlg('请先选择一幅位图',mtinformation,[mbOK],0)
  Else
  Begin
  Reg:=Tregistry.Create;{创建Tregistry对象的实例}
  Reg.Rootkey:= Hkey_Current_User;{设置根键名称}
  Reg.OpenKey'Control Panel\Desktop',False); {打开Control Panel\Desktop 路径对应的主键}
  Reg.WriteString ('TileWallPaper','0');
  Reg.WriteString
  'Wallpaper',fileli
  stbox1.FileName);{向TileWallpaper 和Wallpaper串覆盖写入新值}
  Systemparametersinfo(SPI_SETDESKWallpaper,0,Nil,SPIF_SendChange);{向Windows发送消息,通知Windows更换壁纸}
  Reg.CloseKey;{将更改内容写入注册表并关闭}
  Reg.Free;{释放对象}
  End;
  End;
  代码中用到的一些函数可以察看Delphi的联机帮助。需要注意的是:调用打开子键的函数OpenKey时,第二个参数一定要设为False。