日期:2009-07-08  浏览次数:20486 次

在VB6中设置墙纸

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Const SPI_SETDESKWALLPAPER = 20
Const SPIF_SENDWININICHANGE = &H2
Const SPIF_UPDATEINIFILE = &H1
Private Sub Command1_Click()
re = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\Test.BMP", 0)
End Sub


在VB.NET 2003中设置墙纸

Private Const SPI_SETDESKWALLPAPER As Integer = &H14
Private Const SPIF_UPDATEINIFILE As Integer = &H1
Private Const SPIF_SENDWININICHANGE As Integer = &H2
Private Declare Auto Function SystemParametersInfo Lib "user32.dll" ( _
ByVal uAction As Integer, ByVal uParam As Integer, _
ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
'设置墙纸
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\Test.BMP", 0)
End Sub
'取消设置
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "", 0)
End Sub

在VB.NET 2005中设置墙纸:

Private Const SPI_SETDESKWALLPAPER As Integer = &H14
Private Const SPIF_UPDATEINIFILE As Integer = &H1
Private Const SPIF_SENDWININICHANGE As Integer = &H2
Private Declare Auto Function SystemParametersInfo Lib "user32.dll" ( _
ByVal uAction As Integer, ByVal uParam As Integer, _
ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
''' <summary>
''' 设置墙纸
''' </summary>
Private Sub SetWallpaper()
'得到我的图片目录中的文件,在VB2005中,利用My.Computer简单得到我的图片目录
Dim imgLocation As String = My.Computer.FileSystem.CombinePath(My.Computer.FileSystem.SpecialDirectories.MyPictures, "MyImage.bmp")
Try
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imgLocation Or SPIF_SENDWININICHANGE)
Catch Ex As Exception
MsgBox("设置过程中出现错误: " & Ex.Message)
End Try
End Sub


参考:

SystemParametersInfo函数的定义和参数:

声明如下:
   Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long

  其中各参数的意义如下表:

参数: 意义
uAction Long,指定要设置的参数。参考uAction常数表
uParam Long,参考uAction常数表
lpvParam Any,按引用调用的Integer、Long和数据结构。
fuWinIni 这个参数规定了在设置系统参数的时候,是否应更新用户设置参数
 





 下面是部分uAction参数,和使用它们的方法:

参数 意义和使用方法
6 设置视窗的大小,SystemParametersInfo(6, 放大缩小值, P, 0),lpvParam为long型
17 开关屏保程序,SystemParametersInfo(17, False, P, 1),uParam为布尔型
13,24 改变桌面图标水平和垂直间距,uParam为间距值(像素),lpvParam为long型
15 设置屏保等待时间,SystemParametersInfo(15, 秒数, P, 1),lpvParam为long型
20 设置桌面背景墙纸,SystemParametersInfo(20, True, 图片路径, 1)
93 开关鼠标轨迹,SystemParametersInfo(93, 数值, P, 1),uParam为False则关闭
97 开关Ctrl+Alt+Del窗口,SystemParametersInfo(97, False, A, 0),uParam为布尔型
  









本例中我们选择图片并取得图片的完整路径,然后通过调用API函数,将这幅图设为墙纸,使用的语法为:SystemParametersInfo SPI_SETDESKWALLPAPER, 0, bmpfile, 1

  其中SystemParametersInfo表示要设置桌面墙纸,bmpfile是要设置的图片的路径。