论文部分内容阅读
摘要:GetSystemMetrics函数是Windows API(Application Program Interface)函数中的一员。利用这一函数,可以获取很多关于系统的信息,包括软件系统和硬件系统等,对于面向计算机软、硬件系统检测、维护的应用程序开发有重要的应用价值。本文讨论了Delphi下GetSystemMetrics函数的典型应用,并提供对应的程序验证。
关键词:Delphi;GetSystemMetrics;系统信息
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
1 引言
GetSystemMetrics函数是API函数中的一员。利用这一函数,通过传递参数来设置GetSystemMetrics函数所要获取的信息,进而获取关于计算机的信息,包括软件系统和硬件系统等,对于面向计算机软、硬件系统检测、维护的应用程序开发有重要的应用价值。
2 函数解析
GetSystemMetrics中有如下几个重要的参数,分别为:SM_CLEANBOOT、SM_CMOUSEBUTTONS、SM_MOUSEPRESENT、SM_NETWORK和SM_CYSCREEN。这五个参数分别应用于操作系统的启动管理、鼠标按键控制、网络连接服务和显示器管理等。
2.1 GetSystemMetrics(SM_CLEANBOOT)
利用GetSystemMetrics(SM_CLEANBOOT),可以获得操作系统的启动模式。具体地:
返回值:0-操作系统是正常启动模式;
返回值:1-操作系统是安全模式启动;
返回值:2-操作系统是网络连接的安全模式启动。
2.2 GetSystemMetrics(SM_CMOUSEBUTTONS)
利用GetSystemMetrics(SM_CMOUSEBUTTONS)可以获取计算机鼠标按键的数量。如果它的返回值是0,则说明计算机没有连接鼠标。
2.3 GetSystemMetrics(SM_MOUSEPRESENT)
利用GetSystemMetrics(SM_MOUSEPRESENT)可以获取计算机是否与鼠标连接正常的信息。它的返回值是布尔值,具体如下:
返回值:True-计算机与鼠标连接正常;
返回值:False-计算机与鼠标连接异常或者未与鼠标连接。
2.4 GetSystemMetrics(SM_NETWORK)
利用GetSystemMetrics(SM_NETWORK)可以获得计算机与网络连接的状态。它的返回值也是一个布尔值,具体如下:
返回值:True-计算机与网络连接正常;
返回值:False-计算机与网络连接异常或者未与网络连接。
2.5 GetSystemMetrics(SM_CYSCREEN)
利用GetSystemMetrics(SM_CXSCREEN/SM_YSCREEN)可以获得计算机显示器的分辨率。该函数的返回值是Longint型。其中:SM_CXSCREEN是显示器的水平分辨率;SM_CYSCREEN是显示器的垂直分辨率。
3 应用举例
3.1 应用举例一
利用GetSystemMetrics(SM_CLEANBOOT)获取操作系统启动状态。在设计环境的主窗体上添加如下控件:4个CheckBox控件和1个Button控件。4个CheckBox控件的Caption属性分别设为:“正常模式”、“安全模式”、“安全模式,并且具备网络功能”、“系统启动有问题”。Button控件的Caption属性设为“检测”;在Button控件中编写如下代码:
case(GetSystemMetrics(SM_CLEANBOOT)) of
0:CheckBox1.Checked:=True; //正常模式
1:CheckBox2.Checked:=True; //安全模式
2:CheckBox3.Checked:=True; //安全模式且具备网络功能
else
CheckBox4.Checked:=True; //系统启动有问题
end;
程序运行效果如图1所示。
图2 应用SM_NETWORK参数的程序运行效果
3.3 应用举例三
利用GetSystemMetrics(SM_CXSCREEN)/(SM_CYSCREEN)获取显示器分辨率信息。在设计环境的主窗体上添加如下控件:2个Label控件和1个Button控件;Button控件的Caption属性设为“检测”;在Button控件中编写如下代码:
var
x,y:longint; //存储显示器水平、垂直分辨率值
a:string;
begin
x := GetSystemMetrics(SM_CXSCREEN);
Str(x,a);
Label1.Caption := ’显示器水平分辨率:’ a;
y := GetSystemMetrics(SM_CYSCREEN);
Str(y,a);
Label2.Caption := ’显示器垂直分辨率:’ a;
end;
程序运行效果如图3所示。
图4 应用SM_CMOUSEBUTTONS参数的程序运行效果
4 总结
GetSystemMetrics函数除上面所介绍的之外还有很多其它重要应用,比如:利用GetSystemMetrics(SM_CXFRAME)/(SM_CYFRAME)获取窗体框架的宽度和高度;利用GetSystemMetrics(SM_CYCAPTION)获取窗体的标题信息;利用GetSystemMetrics(SM_DBCSENABLED)判断操作系统的语言等。该函数对用户获取、了解计算机软件、硬件信息有着十分重要的作用。
参考文献:
[1]John Ayres.The Tomes of Delphi (tm) Win32 Core API Windows 2000 Edition[M].Wordware Publishing,2001.
[2]谭燕,赵磊,李之明.Delphi高级辅助工具精解[M].中国铁道出版社,2003.
关键词:Delphi;GetSystemMetrics;系统信息
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
1 引言
GetSystemMetrics函数是API函数中的一员。利用这一函数,通过传递参数来设置GetSystemMetrics函数所要获取的信息,进而获取关于计算机的信息,包括软件系统和硬件系统等,对于面向计算机软、硬件系统检测、维护的应用程序开发有重要的应用价值。
2 函数解析
GetSystemMetrics中有如下几个重要的参数,分别为:SM_CLEANBOOT、SM_CMOUSEBUTTONS、SM_MOUSEPRESENT、SM_NETWORK和SM_CYSCREEN。这五个参数分别应用于操作系统的启动管理、鼠标按键控制、网络连接服务和显示器管理等。
2.1 GetSystemMetrics(SM_CLEANBOOT)
利用GetSystemMetrics(SM_CLEANBOOT),可以获得操作系统的启动模式。具体地:
返回值:0-操作系统是正常启动模式;
返回值:1-操作系统是安全模式启动;
返回值:2-操作系统是网络连接的安全模式启动。
2.2 GetSystemMetrics(SM_CMOUSEBUTTONS)
利用GetSystemMetrics(SM_CMOUSEBUTTONS)可以获取计算机鼠标按键的数量。如果它的返回值是0,则说明计算机没有连接鼠标。
2.3 GetSystemMetrics(SM_MOUSEPRESENT)
利用GetSystemMetrics(SM_MOUSEPRESENT)可以获取计算机是否与鼠标连接正常的信息。它的返回值是布尔值,具体如下:
返回值:True-计算机与鼠标连接正常;
返回值:False-计算机与鼠标连接异常或者未与鼠标连接。
2.4 GetSystemMetrics(SM_NETWORK)
利用GetSystemMetrics(SM_NETWORK)可以获得计算机与网络连接的状态。它的返回值也是一个布尔值,具体如下:
返回值:True-计算机与网络连接正常;
返回值:False-计算机与网络连接异常或者未与网络连接。
2.5 GetSystemMetrics(SM_CYSCREEN)
利用GetSystemMetrics(SM_CXSCREEN/SM_YSCREEN)可以获得计算机显示器的分辨率。该函数的返回值是Longint型。其中:SM_CXSCREEN是显示器的水平分辨率;SM_CYSCREEN是显示器的垂直分辨率。
3 应用举例
3.1 应用举例一
利用GetSystemMetrics(SM_CLEANBOOT)获取操作系统启动状态。在设计环境的主窗体上添加如下控件:4个CheckBox控件和1个Button控件。4个CheckBox控件的Caption属性分别设为:“正常模式”、“安全模式”、“安全模式,并且具备网络功能”、“系统启动有问题”。Button控件的Caption属性设为“检测”;在Button控件中编写如下代码:
case(GetSystemMetrics(SM_CLEANBOOT)) of
0:CheckBox1.Checked:=True; //正常模式
1:CheckBox2.Checked:=True; //安全模式
2:CheckBox3.Checked:=True; //安全模式且具备网络功能
else
CheckBox4.Checked:=True; //系统启动有问题
end;
程序运行效果如图1所示。
图2 应用SM_NETWORK参数的程序运行效果
3.3 应用举例三
利用GetSystemMetrics(SM_CXSCREEN)/(SM_CYSCREEN)获取显示器分辨率信息。在设计环境的主窗体上添加如下控件:2个Label控件和1个Button控件;Button控件的Caption属性设为“检测”;在Button控件中编写如下代码:
var
x,y:longint; //存储显示器水平、垂直分辨率值
a:string;
begin
x := GetSystemMetrics(SM_CXSCREEN);
Str(x,a);
Label1.Caption := ’显示器水平分辨率:’ a;
y := GetSystemMetrics(SM_CYSCREEN);
Str(y,a);
Label2.Caption := ’显示器垂直分辨率:’ a;
end;
程序运行效果如图3所示。
图4 应用SM_CMOUSEBUTTONS参数的程序运行效果
4 总结
GetSystemMetrics函数除上面所介绍的之外还有很多其它重要应用,比如:利用GetSystemMetrics(SM_CXFRAME)/(SM_CYFRAME)获取窗体框架的宽度和高度;利用GetSystemMetrics(SM_CYCAPTION)获取窗体的标题信息;利用GetSystemMetrics(SM_DBCSENABLED)判断操作系统的语言等。该函数对用户获取、了解计算机软件、硬件信息有着十分重要的作用。
参考文献:
[1]John Ayres.The Tomes of Delphi (tm) Win32 Core API Windows 2000 Edition[M].Wordware Publishing,2001.
[2]谭燕,赵磊,李之明.Delphi高级辅助工具精解[M].中国铁道出版社,2003.