C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[636] OS 버전 판단 클래스
김태선 [cppbuilder] 6805 읽음    2007-03-31 02:48
/*
    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();
}
//---------------------------------------------------------------------------
박우열 [yourizzang]   2008-04-02 14:35 X
감사합니다.
어떻게 하는지 궁금했어요~
OS가 뭔지 알는방법을 알고싶었거든요~^^

+ -

관련 글 리스트
636 OS 버전 판단 클래스 김태선 6805 2007/03/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.