| ◆ OSの種別(プラットフォーム)を判別する |
|
| !ポイント |
|
| 必要なヘッダファイル |
| "winbase.h" |
| 関数宣言・定数定義部 |
//関数戻り値の定義 #define OSVER_ERROR -1 //バージョンの取得失敗 #define OSVER_WIN32s 0 //Windows3.1(32bit) #define OSVER_WIN95 1 //Windows95 #define OSVER_WIN98 2 //Windows98 #define OSVER_WINNT 3 //WindowsNT(WS/SERVER) #define OSVER_WIN2K 4 //Windows2000 #define OSVER_UNKNOWN 5 //不明なバージョン //関数のプロトタイプ宣言 int GetOSVerInfo( void ); |
| 関数定義部 |
/*
* Function Name:GetOSVerInfo();
*
* Paramator :NONE
* Return :int OSの種別。
* 失敗したらOSVER_ERROR(-1)を返す。
* Description :使用中のOSのバージョン及び種別
* (Windows3.1/95/98/NT/2000)を返す。
*/
int GetOSVerInfo( void )
{
OSVERSIONINFO stOSVer;
//何故か最初に構造体のサイズを指定しなきゃダメ...
stOSVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
//バージョン情報取得(WinAPI関数)
if( !GetVersionEx(&stOSVer) )
{
return OSVER_ERROR;
}
//取り敢えず WinAPIで定義されたプラットフォームで分岐
switch(stOSVer.dwPlatformId)
{
case VER_PLATFORM_WIN32s:
//Win3.1の場合
return OSVER_WIN32s;
case VER_PLATFORM_WIN32_WINDOWS:
//Win32の場合(95or98)
if(stOSVer.dwMinorVersion==0)
return OSVER_WIN95;
else if(stOSVer.dwMinorVersion== 1)
return OSVER_WIN98;
else
return OSVER_UNKNOWN;
case VER_PLATFORM_WIN32_NT:
//WinNTの場合(NTor2000)
if(stOSVer.dwMajorVersion==4)
return OSVER_WINNT;
else if(stOSVer.dwMajorVersion==5)
return OSVER_WIN2K;
else
return OSVER_UNKNOWN;
default:
return OSVER_UNKNOWN;
}
}
|