杜建蔚 在開發(fā)軟件時,由于在不同的操作系統(tǒng)中實(shí)現(xiàn)技術(shù)上的區(qū)別,可能某一軟件的功能僅局限于單一的操作系統(tǒng)環(huán)境,例如Windows98或是WindowsNT,為此,我們需要在用戶使用軟件時給予相應(yīng)提示。
我們需要編寫一段小程序用于在軟件啟動時來判斷當(dāng)前軟件所運(yùn)行的環(huán)境到底是哪個操作系統(tǒng),并當(dāng)用戶在錯誤的環(huán)境中運(yùn)行軟件時給予報警。本文將詳細(xì)介紹實(shí)現(xiàn)的方法及過 程。
OSVERSIONINFO結(jié)構(gòu)
OSVERSIONINFO結(jié)構(gòu)包含了操作系統(tǒng)的版本信息,包括操作系統(tǒng)的主版本號、副版本號、創(chuàng)建號、以及操作系統(tǒng)平臺ID號和關(guān)于操作系統(tǒng)的其他描述信息。其定義為:
typedef struct _OSVERSIONINFO{
DWORD dwOSVersionInfoSize;
//指定該數(shù)據(jù)結(jié)構(gòu)的字節(jié)大小
DWORD dwMajorVersion;
//操作系統(tǒng)的主版本號
DWORD dwMinorVersion;
//操作系統(tǒng)的副版本號
DWORD dwBuildNumber;
//操作系統(tǒng)的創(chuàng)建號
DWORD dwPlatformId;
//操作系統(tǒng)ID號
TCHAR szCSDVersion[ 128 ];
//關(guān)于操作系統(tǒng)的一些附加信息
} OSVERSIONINFO;
其中dwPlatformId可為以下值:
VER_PLATFORM_WIN32s:標(biāo)識為Windows 3.1;
VER_PLATFORM_WIN32_WINDOWS:標(biāo)識為Windows 95或Windows 98;
對于Windows 95操作系統(tǒng)而言,dwMinorVersion值為0,對Windows 98操作系統(tǒng)dwMinorVersion則大于0;
VER_PLATFORM_WIN32_NT:標(biāo)識為WindowsNT。
程序具體實(shí)現(xiàn)步驟
1.使用AppWizard新建一個基于單文檔的工程SystemJudge。
2.在工程中添加兩個文件,即定義文件judge.h和實(shí)現(xiàn)文件judge.cpp。
在judge.h文件中添加如下代碼:
#ifndef __JUDGE_H__
#define __ JUDGE _H__
Cstring JudgeOperatingSystem();
//判斷操作系統(tǒng)函數(shù)定義
#endif
在judge.cpp文件中添加如下代碼:
#include "stdafx.h"
#include "judge.h"
Cstring JudgeOperatingSystem()
//判斷操作系統(tǒng)函數(shù)的實(shí)現(xiàn)
{
OSVERSIONINFO OsVersionInfo;
OsVersionInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(&&OsVersionInfo);
if(OsVersionInfo.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS )
{
if(OsVersionInfo.dwMajorVersion>4) return "Windows98";
else if(OsVersionInfo.dwMajorVersion=4)
{
if(OsVersionInfo.dwMinorVersion>0) return "Windows98";
else return "Windows95";
}
else return "Windows3.1";
}
elseif(OsVersionInfo.dwPlatformId= VER_PLATFORM_WIN32_NT )
{
return "WindowsNT";
}
else if(OsVersionInfo.dwPlatformId== VER_PLATFORM_WIN32s)
{
return "Windows3.1";
}
else return "NoName";
}
3.在CmainFrame類的實(shí)現(xiàn)文件MainFrm.cpp中開頭添加#include"judge.h"。并在其OnCreate函數(shù)中return語句前加入如下判斷代碼:
Cstring sOperatingSystem = JudgeOperatingSystem();
if( sOperatingSystem == "Windows98")
{
//假如本軟件需要在WindowsNT下運(yùn)行
MessageBox(
"本軟件在WindowsNT4.0或更高的版本下運(yùn)行,您的操作系統(tǒng)是Windows98 "
"請安裝WindowsNT4.0以上的版本或使用Windows98版!",
"警告",
MB_OK
);
}
else if( sOperatingSystem == "WindowsNT")
{
//假如軟件需要在Windows98下運(yùn)行,我們可在此添加警告對話框
}
else return -1;
至此,操作系統(tǒng)判斷功能已經(jīng)實(shí)現(xiàn),在軟件啟動時會自動判斷軟件當(dāng)前運(yùn)行的操作系統(tǒng)并提示用戶是否在正確的操作系統(tǒng)環(huán)境,從而保證了軟件運(yùn)行的正常性。
本程序在VC++ 6.0,Windows 98下調(diào)試通過。
|