用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Builder 模式UI模式
- (轉貼) C++ Builder 2007六月上市 (C/C++) (News)C++UI
- 玩轉SVN-啟動模式模式
- 動手造輪子——用Builder模式擼一個通用版本的DialogUI模式
- Windows開啟關閉測試模式的方法(含開啟測試模式失敗的解決辦法)Windows模式
- windows10系統啟用Kiosk模式的方法WindowsiOS模式
- wsl 中啟動 Windows 的 *.exe 應用Windows
- [轉帖]Windows netstat 檢視埠、程序佔用Windows
- 建立模式 03-Builder模式模式UI
- 設計模式:Builder模式概述設計模式UI
- 建造者模式(Builder)模式UI
- JavaBean之Builder模式JavaBeanUI模式
- Java設計模式之builder模式Java設計模式UI
- 設計模式-建造者模式(Builder)設計模式UI
- 如何檢測Windows服務停止後自動啟動?自動執行.bat批處理檔案?WindowsBAT
- 建造者模式(Builder Pattern)模式UI
- 生成器模式(Builder)模式UI
- windows10開機怎麼以安全模式啟動_win10開機以安全模式啟動的方法Windows模式Win10
- windows10系統怎麼啟用拆分檢視Windows
- SMART Utility for mac (硬碟檢測) 3.2.7啟用版Mac硬碟
- 設計模式--建造者模式(Builder Pattern)設計模式UI
- 【設計模式筆記】(二)- Builder模式設計模式筆記UI
- 設計模式-生成器模式Builder設計模式UI
- 【設計模式】- 生成器模式(Builder)設計模式UI
- windows如何開機自動啟動某些應用?Windows
- Windows10系統怎麼啟動Office安全模式Windows模式
- 構建者模式(Builder pattern)模式UI
- Builder模式與Java語法UI模式Java
- Builder模式,今天你用了嘛UI模式
- 深入瞭解 Builder 模式 - frankelUI模式
- 移動應用隱私合規檢測簡介及目標檢測技術的應用
- 《設計模式》 - 3. 建立者模式( Builder )設計模式UI
- 設計模式(五)Builder構建者模式設計模式UI
- kms啟用WindowsWindows
- 啟用windows officeWindows
- windows10硬碟怎麼檢測_win10硬碟檢測的方法Windows硬碟Win10
- 【docker】記錄一次nginx啟動失敗的檢測DockerNginx
- Snatch勒索軟體使系統進入Windows安全模式以逃避檢測Windows模式
- 用C++模擬蚊子的運動來檢驗概率論內容C++