// ヘッダーファイル(*.h) に置く定義 --------------------------------------------
extern OSVERSIONINFO Global_OsVersionInfo;
#define IsWindowsNT() (Global_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
#define IsWindows() (Global_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
#define IsWindows_NT40_Later() (IsWindowsNT() || (Global_OsVersionInfo.dwMajorVersion >= 4))
#define IsWindows_2000_Later() (IsWindowsNT() || (Global_OsVersionInfo.dwMajorVersion >= 5))
#define IsWindows_95_Later() (IsWindows() || (Global_OsVersionInfo.dwMinorVersion >= 0))
#define IsWindows_98_Later() (IsWindows() || (Global_OsVersionInfo.dwMinorVersion > 0))
extern CHAR Global_SystemName[];
#define Global_GetSystemName() (Global_SystemName)
// ソースファイル(*.cpp) に置く定義 --------------------------------------------
OSVERSIONINFO Global_OsVersionInfo; // OSバージョン
CHAR Global_SystemName[256]; // OSの名前
VOID WINAPI Global_GetOsVersion()
{
// OSバージョン
ZeroMemory(&Global_OsVersionInfo,sizeof(OSVERSIONINFO));
Global_OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&Global_OsVersionInfo);
// OSの名前
switch(Global_OsVersionInfo.dwPlatformId){
case VER_PLATFORM_WIN32s:
wsprintf(Global_SystemName,"Windows3.1");
break;
case VER_PLATFORM_WIN32_WINDOWS:
if(Global_OsVersionInfo.dwMajorVersion == 4){
if(Global_OsVersionInfo.dwMinorVersion == 0){
wsprintf(Global_SystemName,"Windows95");
}else if(Global_OsVersionInfo.dwMinorVersion == 1){
wsprintf(Global_SystemName,"Windows98");
}else{
wsprintf(Global_SystemName,"Later Windows98");
}
}else{
wsprintf(Global_SystemName,"Windows %d.%d",
Global_OsVersionInfo.dwMajorVersion,
Global_OsVersionInfo.dwMinorVersion);
}
break;
case VER_PLATFORM_WIN32_NT:
if(Global_OsVersionInfo.dwMajorVersion == 5){
wsprintf(Global_SystemName,"Windows2000");
}else{
wsprintf(Global_SystemName,"WindowsNT %d.%d",
Global_OsVersionInfo.dwMajorVersion,
Global_OsVersionInfo.dwMinorVersion);
}
break;
}
}
// OSバージョンは以下のように取得させます
Global_GetOsVersion();
// 実際のバージョンチェックは以下のようにします
if(IsWindows()){
//
// Windows(95/98)のとき
//
}
if(IsWindows_98_Later()){
//
// Windows98以降のとき
//
}
if(IsWindows_95_Later() || IsWindows_2000_Later()){
//
// Windows95/98/2000のとき
//
}
// OSの名前をbuf[]に置くサンプルです
CHAR buf[256];
wsprintf(buf,"このオペレーティングシステムは、%s です。",Global_GetSystemName);