用C++ Builder檢測Windows的啟動模式(轉)

ba發表於2007-08-15
用C++ Builder檢測Windows的啟動模式(轉)[@more@]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;

}

}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-957540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章