systemparametersinfo详细用法
应一同学要求特把这api详之
设置和取得windows系统参数,现在让我们详细地分析一下(其功能强大)
下面一例取得work区
procedure CenterWindow(winHnd : HWND; winWidth : Integer; winHeight : Integer);
var
screenDim : TRect;
screenLeft : Integer;
ScreenTop : Integer;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @screenDim,0);
screenLeft := Trunc(((screenDim.Right-screenDim.Left)/2)-(winWidth/2));
screenTop := Trunc(((screenDim.Bottom-screenDim.Top)/2)-(winHeight/2));
SetWindowPos(winHnd,HWND_TOPMOST,screenLeft,screenTop,winWidth,winHeight,0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
centerwindow(form1.handle,200,200);
end;
下面大家可以试用一下。
SPI_GETACCESSTIMEOUT lpvParam是一个ACCESSTIMEOUT结构,其中要载入辅助访问特性计时信息。在调用函数之前,uParam必须设为ACCESSTIMEOUT结构的大小
SPI_GETANIMATION lpvParam是一个ANIMATIONINFO结构,将在其中载入窗口最小化和恢复时的动画信息。不能在NT 3.51中使用
SPI_GETBEEP lpvParam是一个Long型数据,若打开了响铃声,则设为TRUE
SPI_GETBORDER lpvParam是一个Long型数据,用于接收一个乘数(倍数),对大小可变的窗口的边框尺寸进行控制
SPI_GETDEFAULTINPUTLANG lpvParam是一个Long型数据,用于接收默认键盘布局的一个32位句柄。不能用于NT 3.51
SPI_GETDRAGFULLWINDOWS lpvParam是一个Long型数据,如在整个窗口上拖动,就会设为TRUE。如果只拖出了一个矩形轮廓,则为FALSE。要求NT 4.0 或 Windows 95支持。其中,Windows 95必须有Plus!支持,或直接安装Windows 95 OSR2
SPI_GETFASTTASKSWITCH lpvParam是一个Long型数据,如允许快速任务切换,则为TRUE。在Windows 95 和 NT 4.0中肯定是TRUE
SPI_GETFILTERKEYS lpvParam是一个FILTERKEYS结构,用于装载与键盘有关的辅助访问特性信息
SPI_GETFONTSMOOTHING lpvParam是一个Long型数据,如打开了边缘修饰特性(让字体更圆润),则为TRUE。只适用于 NT 4.0 和带 Plus! 支持的 Windows 95
SPI_GETGRIDGRANULARITY lpvParam是一个Long型数据,会设为网格间隔尺寸值
SPI_GETHIGHCONTRAST lpvParam是一个HIGHCONTRAST结构,用于装载与用户显示器有关的辅助访问特性信息。仅适用于Win95
SPI_GETICONMETRICS lpvParam是一个ICONMETRICS结构,用于装载与图标比例及排列有关的信息。仅适用于Windows 95 及 NT 4.0
SPI_GETICONTITLELOGFONT lpvParam指向一个LOGFONT结构,设置内容取决于图标标题采用的字体
SPI_GETICONTITLEWRAP lpvParam是一个Long型数据,如允许对图标标题进行自动换行,则设为TRUE
SPI_GETKEYBOARDDELAY lpvParam是一个Long型数据,设为键盘重复延时
SPI_GETKEYBOARDPREF lpvParam是一个Long型数据,如用户更喜欢用键盘而不是鼠标,则设为TRUE。如这个参数为真,windows会显示出附加的键盘接口信息,只适用于win95
SPI_GETKEYBOARDSPEED lpvParam是一个Long型数据,设为键盘的重复速率
SPI_GETMENUDROPALIGNMENT lpvParam是一个Long型数据,若弹出式菜单左对齐(默认),则设为FALSE。否则为TRUE
SPI_GETMINIMIZEDMETRICS lpvParam是一个MINIMIZEDMETRICS结构,用于装载与最小化窗口的比例及排列有关的信息。仅适用于win95
SPI_GETMOUSE lpvParam是三元素Long数组的头一个条目,条目0设为用户配置MouseThreshold1字段,条目1设为MouseThreshold2字段,条目2设为MouseSpeed
SPI_GETMOUSEKEYS lpvParam是一个MOUSEKEYS结构,要在其中装载与鼠标有关的辅助访问信息。不能在 NT 3.51中使用
SPI_GETNONCLIENTMETRICS lpvParam是一个NONCLIENTMETRICS结构,要在其中装载有关字体和环境有关的信息;这些信息会在描绘窗口非客户区域时涉及到,如边框、标题等。只适用于win95
SPI_GETSCREENSAVEACTIVE lpvParam指向一个整数;倘若屏幕保护程序处于活动状态,则设为TRUE;否则设为FALSE
SPI_GETSCREENSAVETIMEOUT lpvParam指向一个整数;它设为屏幕保护延时(以秒为单位)
SPI_GETSERIALKEYS lpvParam是一个SERIALKEYS结构,用于装载与输入设备(用于模拟键盘输入)有关的辅助访问特性信息。只适用于win95
SPI_GETSHOWSOUNDS lpvParam是一个Long型数据,倘若应用程序应该用可视线索来代替声音,则设为TRUE。它的作用与GetSystemMetrics函数的SM_GETSHOWSOUNDS选项是相同的
SPI_GETSNAPTODEFBUTTON lpvParam是一个Long型数据,倘若鼠标会自动移到新对话框的默认按钮,则设为TRUE。只适用于NT 4.0
SPI_GETSOUNDSENTRY lpvParam是一个SOUNDSENTRY结构,用于装载让windows提供可视标志(而不是系统声音)时涉及的辅助访问特征信息。调用之前,必须将uParam设为SOUNDSENTRY结构的长度
SPI_GETSTICKYKEYS lpvParam是一个STICKYKEYS结构,用于装载允许一名用户顺序按键(而不是同时按下)时涉及的辅助访问特征信息。同时按键的例子包括Shift+, Ctrl+, Alt+ 等。调用之前,必须将uParam设为STICKYKEYS结构的长度
SPI_GETTOGGLEKEYS lpvParam是一个TOGGLEKEYS结构,要在其中装载按下一个开关键(NumLock,CapsLock,ScrollLock)后播放声音提示时涉及的辅助访问特征信息。windows会用一个不同的声音指出开或关状态。调用之前,必须将uParam设为TOGGLEKEYS结构的长度
SPI_GETWORKAREA lpvParam是一个RECT结构,用于装载屏幕的工作区
SPI_ICONHORIZONTALSPACING 如lpvParam为NULL,则uParam代表桌面图标新的水平间隔距离,以像素为单位
SPI_ICONVERTICALSPACING 与SPI_ICONHORIZONTALSPACING相似,只不过指定图标的垂直间距
SPI_LANGDRIVER lpvParam是一个字串,用于容纳新的语言驱动程序文件的名称
SPI_SETACCESSTIMEOUT 与SPI_GETACCESSTIMEOUT的参数相同
SPI_SETANIMATION 与SPI_GETANIMATION的参数相同
SPI_SETBEEP uParam为TRUE时打开响铃,FALSE关闭
SPI_SETBORDER uParam代表一个乘数,用于控制尺寸可变的的窗口边框的大小
SPI_SETDEFAULTINPUTLANG 与SPI_GETDEFAULTINPUTLANG的参数相同
SPI_SETDESKPATTERN 从注册表或win.ini中强制窗口恢复当前的桌面方案
SPI_SETDESKWALLPAPER lpvParam代表一个字串,用于容纳作为桌面墙纸使用的一个位图文件的名称
SPI_SETDOUBLECLICKTIME uParam代表连续两次单击被当作一次双击处理时需要间隔的时间(以毫秒为单位)
SPI_SETDOUBLECLKHEIGHT uParam代表新的双击高度,可参考GetSystemMetrics函数的注解
SPI_SETDOUBLECLKWIDTH uParam代表新的双击宽度,可参考GetSystemMetrics函数的注解
SPI_DRAGFULLWINDOWS uParam为TRUE时打开全窗口拖动,否则为FALSE。仅适用于win95
SPI_SETDRAGHEIGHT uParam代表一个矩形的高度(以像素为单位),用于决定拖动操作何时开始。只适用于win95
SPI_SETDRAGWIDTH uParam代表一个矩形的宽度(以像素为单位),用于决定拖动操作何时开始。只适用于win95
SPI_SETFASTTASKSWITCH uParam为TRUE时打开快速任务切换,FALSE则关闭
SPI_FILTERKEYS 参数与 SPI_GETFILTERKEYS 相同
SPI_SETFONTSMOOTHING uParam为TRUE时打开字体修饰(圆润)。只能在NT 4.0 和得到 Plus! 支持的 Win95(或 Windows 95 OSR2)中使用
SPI_SETGRIDGRANULARITY uParam代表新的网格间距
SPI_SETHIGHCONTRAST 参数与 SPI_GETHIGHCONTRAST 相同
SPI_SETICONMETRICS 参数与 SPI_GETICONMETRICS 相同
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 相同