在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是要设置的图片的路径。