/*
OS 버전 판단 클래스
*/
//---------------------------------------------------------------------------
#ifndef COSVersionH
#define COSVersionH
//---------------------------------------------------------------------------
enum TOSVersion
{
osUnknown, // 0
osWin31, // 1
osWin95, // 2
osWin95OSR2, // 3
osWin9x, // 4
osWin98, // 5
osWin98SE, // 6
osWinME, // 7
osWinNT, // 8
osWinNT3, // 9
osWinNT4, // 10
osWin2000, // 11
osWinXP, // 12
osWin2003, // 13
osWinVista // 14
};
class COSVersion
{
protected:
TOSVersion Get()
{
OSVERSIONINFO VersionInfo;
TOSVersion Version = osUnknown;
ZeroMemory(&VersionInfo, sizeof(OSVERSIONINFO));
VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&VersionInfo);
switch(VersionInfo.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT :
switch(VersionInfo.dwMajorVersion)
{
case 3 : Version = osWinNT3; break;
case 4 : Version = osWinNT4; break;
case 5 :
switch(VersionInfo.dwMinorVersion)
{
case 0 : Version = osWin2000; break;
case 1 : Version = osWinXP; break;
case 2 : Version = osWin2003; break;
default: Version = osWinNT; break;
}
break;
case 6 : Version = osWinVista; break;
}
break;
case VER_PLATFORM_WIN32s :
Version = osWin31;
break;
case VER_PLATFORM_WIN32_WINDOWS :
switch(VersionInfo.dwMinorVersion)
{
case 0 :
if (VersionInfo.szCSDVersion[1] == 'B') Version = osWin95OSR2;
else Version = osWin95;
break;
case 10 :
if (VersionInfo.szCSDVersion[1] == 'A') Version = osWin98SE;
else Version = osWin98;
break;
case 90 :
if (VersionInfo.dwBuildNumber == 73010104) Version = osWinME;
else Version = osWin9x;
break;
}
break;
}
return Version;
}
public:
TOSVersion Version;
public:
COSVersion()
{
Version = Get();
}
char *GetOSName()
{
static char *OS[] =
{
"Unknown OS", // 0
"Windows 3.1", // 1
"Windows 95", // 2
"Windows 95 OSR2", // 3
"Windows 9x", // 4
"Windows 98", // 5
"Windows 98 SE", // 6
"Windows ME", // 7
"Windows NT", // 8
"Windows NT3", // 9
"Windows NT4", // 10
"Windows 2000", // 11
"Windows XP", // 12
"Windows 2003", // 13
"Windows Vista" // 14
};
return OS[Version];
}
};
//---------------------------------------------------------------------------
#endif
몇가지 소스를 참고로 제작했습니다. 이런거야 제작이라고 할것도 없지만.
사용법은 아래와 같습니다.
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
COSVersion OS;
if (OS.Version == osWin31)
Caption = "헉, Windows 3.1 이라니...";
else
Caption = OS.GetOSName();
}
//---------------------------------------------------------------------------
|
어떻게 하는지 궁금했어요~
OS가 뭔지 알는방법을 알고싶었거든요~^^