在Windows9x編程過程中,我們經(jīng)常需要了解當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)。例如,如果Win9x運(yùn)行于安全模式,那么多媒體等部件可能無法正確運(yùn)行。程序中有必要對此做相應(yīng)處理,以提高程序安全性,增強(qiáng)系統(tǒng)的適應(yīng)能力。VB中沒有直接提供此類控制或函數(shù),但是我們可以通過API函數(shù)GetSystemMetrics輕松地實現(xiàn)對Win運(yùn)行模式的判斷。
GetSystemMetrics函數(shù)原型如下:
Public Declare Function GetSystemMetrics Lib “user32” (ByVal nIndex As Long) As Long
其中nIndex的不同取值可以使該函數(shù)實現(xiàn)不同的功能。例如返回Win桌面中各種顯示單元的寬度和高度、是否安裝了鼠標(biāo)、是否調(diào)換了鼠標(biāo)左右鍵的定義等。
當(dāng)nIndex = 67(SM_CLEANBOOT)時,該函數(shù)的返回值表示W(wǎng)indows9x的當(dāng)前運(yùn)行模式。
在以下的示例中我們可以看到GetSystemMetrics函數(shù)的用法和作用。首先在BAS模塊文件中做如下說明:
Option Explicit Public Const SM_CLEANBOOT = 67 Public Declare Function GetSystemMetrics Lib “user32” (ByVal nIndex As Long) As Long
在窗體中添加標(biāo)簽Label1和命令按鈕Command1,設(shè)置如下代碼:
Private Sub Command1_Click() Select Case GetSystemMetrics(SM_CLEANBOOT)
Case 0:Label1=“系統(tǒng)運(yùn)行于正常模式” Case 1:Label1=“系統(tǒng)運(yùn)行于安全模式” Case 2:Label1=“系統(tǒng)運(yùn)行于網(wǎng)絡(luò)環(huán)境下的安全模式” End Select End Sub
|