HOW TO:墙纸设置

Imports  System.Security
Imports  System.Runtime.InteropServices

< SuppressUnmanagedCodeSecurity() >  _
Friend   NotInheritable   Class  UnsafeNativeMethods
    
< DllImport( " user32.dll " , CharSet: = CharSet.Auto) >  _
    
Public   Shared   Function  SystemParametersInfo( _
        
ByVal  nAction  As   Integer , _
        
ByVal  nParam  As   Integer , _
        
ByVal  lpvParam  As   String , _
        
ByVal  nUpdate  As   Integer  _
    ) 
As   Boolean

    
End Function

    
Public   Const  SPI_SETDESKWALLPAPER  As   Integer   =   & H14

    
Public   Const  SPIF_UPDATEINIFILE  As   Integer   =   & H1
    
Public   Const  SPIF_SENDWININICHANGE  As   Integer   =   & H2
End Class

Public   Class  DesktopWallpaper
    
Private   Sub   New ()
    
End Sub

    
Public   Shared   Function  Clear( ByVal  update  As  UpdateType)  As   Boolean
        
Return  InternalChange( "" , update)
    
End Function

    
Public   Shared   Function  Change( ByVal  bmpFile  As   String ByVal  update  As  UpdateType)  As   Boolean
        
Return  InternalChange(bmpFile, update)
    
End Function

    
Public   Shared   Function  Change( ByVal  path  As   String ByVal  bmpFilename  As   String ByVal  update  As  UpdateType)  As   Boolean
        
Dim  bmpFile  As   String   =  Microsoft.VisualBasic.FileIO.FileSystem.CombinePath(path, bmpFilename)
        
Return  InternalChange(bmpFile, update)
    
End Function

    
Private   Shared   Function  InternalChange( ByVal  bmpFile  As   String ByVal  update  As  UpdateType)  As   Boolean
        
Return  UnsafeNativeMethods.SystemParametersInfo( _
            UnsafeNativeMethods.SPI_SETDESKWALLPAPER, _
            
0 , _
            bmpFile, _
            GetUpdateValue(update))
    
End Function

    
Private   Shared   Function  GetUpdateValue( ByVal  update  As  UpdateType)  As   Integer
        
Select   Case  update
            
Case  UpdateType.Save
                
Return  UnsafeNativeMethods.SPIF_UPDATEINIFILE
            
Case  UpdateType.Reflesh
                
Return  UnsafeNativeMethods.SPIF_SENDWININICHANGE
            
Case  UpdateType.SaveAndReflesh
                
Return  UnsafeNativeMethods.SPIF_UPDATEINIFILE  Or  UnsafeNativeMethods.SPIF_SENDWININICHANGE
        
End   Select
    
End Function

    
Public   Enum  UpdateType
        
' '' <summary>
         ' '' 保存设置,重启系统后有效
         ' '' </summary>
        Save  =   1
        
' '' <summary>
         ' '' 更新设置,本次有效,重启系统后无效
         ' '' </summary>
        Reflesh  =   2
        
' '' <summary>
         ' '' 保存设置并生效
         ' '' </summary>
        SaveAndReflesh  =   3
    
End Enum
End Class



' 没全部测试。在我的简单测试中,SaveOnly都会Reflesh了。
Public   Class  Demo

    
Public   Shared   Sub  RefleshOnly()
        DesktopWallpaper.Change(
" c: /test.bmp " , DesktopWallpaper.UpdateType.Reflesh)
    
End Sub

    
Public   Shared   Sub  SaveOnly()
        DesktopWallpaper.Change(
" c:/ test.bmp " , DesktopWallpaper.UpdateType.Save)
    
End Sub

    
Public   Shared   Sub  Update()
        DesktopWallpaper.Change(
" c:/ test.bmp " , DesktopWallpaper.UpdateType.SaveAndReflesh)
    
End Sub

    
Public   Shared   Sub  Clear()
        DesktopWallpaper.Clear(DesktopWallpaper.UpdateType.SaveAndReflesh)
    
End Sub
End Class
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值