用C++Builder检测Windows的启动模式
Windows 95/98的启动模式可以分为正常模式和安详模式,在安详模式下,有许多成果被限制利用,好比多媒体成果、网络成果等。有时,我们编写的措施正好需要这些被限制的成果,因此我们但愿当措施运行时能自动检测当前Windows所处的启动模式是不是安详模式,以确定是否继承运行措施。
那么如安在C++ Builder措施中检测当前的Windows是以正常模式照旧安详模式启动的?这需要利用到API函数GetSystemMetrics来举办检测。API函数GetSystemMetrics可以取得Windows的一些设置信息,好比,鼠标的按键数、窗体的界线宽度,它也可以测恰当前Windows所处的启动模式。
在Windows API中,该函数的界说如下:
int GetSystemMetrics( int nIndex );
个中参数nIndex的取值许多,假如只想检测Windows的启动模式,只要取参数值为SM_CLEANBOOT即可,该值将确认当前的Windows是以何种模式启动的。它的返回值有三个:
0:正常启动模式;
1:安详模式启动Windows;
2:以安详模式启动,可是拥有网络成果。
我们可以在措施的起始部门利用该函数,如下面的示例中,我们按照Windows启动模式的差异,应用措施显示出差异的提示信息,用户可以在实际编程中详细添加新的处理惩罚代码。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
switch(GetSystemMetrics(SM_CLEANBOOT))
{
case 0:
ShowMessage("正常模式启动");
break;
case 1:
ShowMessage("安详模式启动");
break;
case 2:
ShowMessage("安详模式启动,但带网络附带成果");
break;
default:
ShowMessage("错误,系统启动有问题。");
break;
}
}