systemparametersinfo详细(更改屏保设置)

本文介绍了如何利用API函数SystemParametersInfo在Windows系统中设置和更改桌面壁纸。通过指定不同的uAction参数,可以实现多种系统参数的调整,如设置屏保、改变图标间距等。特别地,使用SPI_SETDESKWALLPAPER参数可以设置桌面背景,并通过Timer控件实现实时更换壁纸。此外,还提到了修改注册表来控制屏幕保护程序的相关设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用SystemParametersInfo函数可以获取和设置数量众多的windows系统参数。这个小程序就是运用了SystemParametersInfo函数来设置桌面的墙纸,而且程序可以让我们选择多幅墙纸图片,程序会以一定的时间间隔自动改变墙纸。

我们先来看看SystemParametersInfo函数的定义和参数:

使用API函数之前必须先在程序中声明如下:

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

例中的定时自动更换是通过Timer控件实现的,我们可以调节Timer控件的Interval属性来改变间隔时间的长短。这样就能看到不断变化的桌面了

************************************************

spi_seticontitlelogfont lpvparam是一个logfont结构,用于定义图标标题采用的字体。uparam指定logfont结构的大小。如两者均为null,则采用系统启动时定义的字体 
spi_seticontitlewrap uparam为true时打开图标标题自动换行 
spi_setkeyboarddelay uparam代表新的键盘重复延时 
spi_setkeyboardpref 若uparam为true,表明用户相比键盘和鼠标更喜欢用前者。参考spi_getkeyboardpref 
spi_setkeyboardspeed uparam代表新的键盘重复速率 
spi_setlangtoggle 令窗口从系统注册表中重新装载热键信息,以便在键盘布局之间交换 
spi_setlowpoweractive uparam为true时允许节能屏幕保护程序模式。只适用于win95 
spi_setlowpowertimeout uparam代表新的节能屏幕保护程序延时。只适用于win95 
spi_setmenudropalignment uparam为false时设置弹出菜单左对齐,true则右对齐 
spi_setminimizedmetrics 参数与spi_getminimizedmetrics一样 
spi_setmouse lpvparam是一个三元素整数数组的头一个条目,其中包含了鼠标设置。参考spi_getmouse 
spi_setmousebuttonswap uparam为true时交换左右鼠标按钮的功能;如果为false,则使用原来的值 
spi_setmousekeys 参数与spi_getmousekeys一样 
spi_setnonclientmetrics 参数与spi_getnonclientmetrics一样 
spi_setpenwindows uparam为true时载入笔窗口,false则卸载 
spi_setpoweroffactive uparam为true时允许停电屏幕保护模式。只适用于win95 
spi_setpowerofftimeout uparam代表新的停电屏幕保护程序延时。只适用于win95 
spi_setscreenreader uparam为true时表示正在运行一个屏幕阅读程序。参考spi_getscreenreader 
spi_setscreensaveactive uparam为true时激活屏幕保护程序;false表示禁止 
spi_setscreensavetimeout uparam代表新的屏幕保护延迟时间,以秒为单位 
spi_setserialkeys 参数与 spi_getserialkeys 相同 
spi_setshowsounds uparam为true时允许窗口开启声音提示辅助访问特性。参考spi_getshowsounds 
spi_setsnaptodefbutton 如鼠标应自动移到新对话框的默认按钮,则uparam为true。只适用于nt 4.0 
spi_setsoundsentry 与 spi_getsoundsentry 相同 
spi_setstickykeys 与 spi_getstickykeys 相同 
spi_settogglekeys 与 spi_gettogglekeys 相同 
spi_setworkarea 与 spi_getworkarea 相同 

例:不用钩子也可以做到的。   
  就是用   SystemParametersInfo   禁止所有键盘的输入   
  Declare   Function   SystemParametersInfo   Lib   "User32"   Alias   "SystemParametersInfoA"   (ByVal   uAction   As   Long,   ByVal   uParam   As   Long,   lpvParam   As   Any,   ByVal   fuWinIni   As   Long)   As   Long   
    
  SystemParametersInfo   97,   -1,   0,   0   '所有按键锁定   
  SystemParametersInfo   97,   0,   0,   0   '恢复键盘锁定

修改注册表实现方法

注册表:
HKEY_CURRENT_USER\Control Panel\Desktop
screensavetimeout=60 屏幕保护的时间
SCRNSAVE.EXE=D:\WINNT\system32\ssstars.scr 屏幕保护时执行的程序
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈(GuoGuo)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值