用C++ Builder檢測Windows的啟動模式(轉)
用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;
}
}
那麼如何在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式、用Delphi實現---->Builder模式 (轉)設計模式UI
- Automation In C++ Builder (轉)C++UI
- 用C++ Builder在桌面上畫圖 (轉)C++UI
- 用C++Builder 5開發Windows下的屏保 (轉)C++UIWindows
- c++ builder中的ado使用 (轉)C++UI
- Borland C++ Builder的API後門 (轉)C++UIAPI
- 用C++ Builder來定製系統選單(轉)C++UI
- 賣熱乾麵的啟發 ---Builder 模式UI模式
- Windows XP 系統八種啟動模式詳解(轉)Windows模式
- [用設計模式鍛鍊C#系列]之Builder (轉)設計模式C#UI
- Builder模式在網站自動生成系統中的應用UI模式網站
- 用C++ Builder 實現類似ie位址列的ComboBox (轉)C++UI
- 用C++ Builder中的TServerSocket,TClientSocket來寫網路通訊程式 (轉)C++UIServerclient
- Bash最常見的啟用模式(轉)模式
- Builder模式的理解!!UI模式
- C++ BUILDER 訊息處理的深入探索 (轉)C++UI
- Builder 模式UI模式
- Builder模式UI模式
- 在C++ Builder中定義事件 (轉)C++UI事件
- 我所理解的設計模式(C++實現)——建造者模式(Builder Pattern)設計模式C++UI
- 取消RHAS3啟動時256M檢測(轉)S3
- 在C++ Builder3下實現程式自動執行的方法 (轉)C++UI
- Windows開啟關閉測試模式的方法(含開啟測試模式失敗的解決辦法)Windows模式
- 檢測系統是不是windows xp (轉)Windows
- windows xp系統啟動模式介紹Windows模式
- wsl 中啟動 Windows 的 *.exe 應用Windows
- 玩轉SVN-啟動模式模式
- C++ Builder 初學問與答 (十一) (轉)C++UI
- C++ Builder 初學問與答 (十二) (轉)C++UI
- C++ Builder 初學問與答(三) (轉)C++UI
- C++ Builder 初學問與答(八) (轉)C++UI
- 用C++Builder實現Word 97自動化 (轉)UI
- windows10系統啟用Kiosk模式的方法WindowsiOS模式
- 在Windows下啟動Linux(轉)WindowsLinux
- 動手造輪子——用Builder模式擼一個通用版本的DialogUI模式
- C++ Builder 高手進階 (五)用BCB編寫多執行緒應用程式 (轉)C++UI執行緒
- Node應用的Systemd啟動(轉)
- 檢視 Oracle 是用spfile 啟動還是 pfile 啟動Oracle