◆ 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; } } |