vb实现桌面墙纸自动更换

 看着大儿子的照片,突然想要将所有儿子的照片都作为墙纸。而且打算每次开机都换一张照片作为桌面。

所以就查了查资料,做了一个桌面的自动更新程序,只要将其快捷方式放入启动组内就可以了。

下载地址为:http://download.csdn.net/source/544487

下面说说代码吧:

SetKeyValue和SetValueEx是在网上抄来的对注册表进行操作的函数,最后一个setDesktop的函数就是将你的图片地址imgstr直接设置为墙纸的函数了。

Private Sub SetKeyValue(sKeyName As String, sValueName As String, vValueSetting As Variant, lValueType As Long, lPredefinedKey As Long)
  lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey)
  lRetVal = SetValueEx(hKey, sValueName, lValueType, vValueSetting)
  RegCloseKey (hKey)
End Sub

Private Function SetValueEx(ByVal hKey As Long, sValueName As String, lType As Long, vValue As Variant) As Long
  Dim lValue As Long
  Dim sValue As String
  Select Case lType
    Case REG_SZ
          sValue = vValue & Chr$(0)
          SetValueEx = RegSetValueExString(hKey, sValueName, 0&, lType, sValue, Len(sValue))
    Case REG_DWORD, REG_BINARY
          lValue = vValue
          SetValueEx = RegSetValueExLong(hKey, sValueName, 0&, lType, lValue, 4)
  End Select
End Function


Private Sub setDeskImage(index As Long)
  '写入注册表
  If index = 1 Then
  '设定居中
  SetKeyValue "Control Panel/desktop", "TileWallpaper", "0", REG_SZ, HKEY_CURRENT_USER
  SetKeyValue "Control Panel/desktop", "WallpaperStyle", "0", REG_SZ, HKEY_CURRENT_USER
  '设定平铺
   ElseIf index = 2 Then
   SetKeyValue "Control Panel/desktop", "TileWallpaper", "0", REG_SZ, HKEY_CURRENT_USER
   SetKeyValue "Control Panel/desktop", "WallpaperStyle", "2", REG_SZ, HKEY_CURRENT_USER
  ElseIf index = 3 Then
  '设定拉伸
   SetKeyValue "Control Panel/desktop", "TileWallpaper", "1", REG_SZ, HKEY_CURRENT_USER
   SetKeyValue "Control Panel/desktop", "WallpaperStyle", "0", REG_SZ, HKEY_CURRENT_USER
  End If
  '更换墙纸
  ChangeWP = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imgstr , SPIF_UPDATEINIFILE )
  '在注册表中记录图片位置
  SetKeyValue "Control Panel/desktop", "Wallpaper", imgstr , REG_SZ, HKEY_CURRENT_USER

End Sub

上面的方法完全可以立即进行墙纸的变换,但是不知道为什么对于居中/对称/平铺的设置并不能立即见效。

于是在我提供的下载链接中,我是用了IActiveDesktop和相应的tlb才实现立即变换桌面显示的模式(居中/对称/平铺)。

但我想很多人都没有这个需求,所以就不再介绍了,上面的应该可以满足大多数人的要求了。:)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值