#ifndef _COMMON_WINVERSIONINFO_HPP_ #define _COMMON_WINVERSIONINFO_HPP_ #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_WINDOWS_HPP_ #include #endif class WinVersionInfo : private OSVERSIONINFO { public: enum Platform{PlatformWin32s=VER_PLATFORM_WIN32s,PlatformWin32Windows=VER_PLATFORM_WIN32_WINDOWS,PlatformWin32NT=VER_PLATFORM_WIN32_NT}; WinVersionInfo(void); virtual ~WinVersionInfo(); DWORD majorVersion(void)const; DWORD minorVersion(void)const; DWORD buildNumber(void)const; Platform platformID(void)const; BOOL isWinNT(void)const; BOOL isWin95(void)const; String additionalInfo(void)const; private: WinVersionInfo(const WinVersionInfo &versionInfo); WinVersionInfo &operator=(const WinVersionInfo &versionInfo); void init(void); void getVersionEx(void); }; inline WinVersionInfo::WinVersionInfo(void) { init(); getVersionEx(); } inline WinVersionInfo::WinVersionInfo(const WinVersionInfo &versionInfo) { // private implementation *this=versionInfo; } inline WinVersionInfo::~WinVersionInfo() { } inline WinVersionInfo &WinVersionInfo::operator=(const WinVersionInfo &/*versionInfo*/) { // private implentation return *this; } inline DWORD WinVersionInfo::majorVersion(void)const { return OSVERSIONINFO::dwMajorVersion; } inline DWORD WinVersionInfo::minorVersion(void)const { return OSVERSIONINFO::dwMinorVersion; } inline DWORD WinVersionInfo::buildNumber(void)const { return OSVERSIONINFO::dwBuildNumber; } inline WinVersionInfo::Platform WinVersionInfo::platformID(void)const { return Platform(OSVERSIONINFO::dwPlatformId); } inline BOOL WinVersionInfo::isWinNT(void)const { return PlatformWin32NT==platformID(); } inline BOOL WinVersionInfo::isWin95(void)const { return PlatformWin32Windows==platformID(); } inline String WinVersionInfo::additionalInfo(void)const { if(OSVERSIONINFO::szCSDVersion&&*OSVERSIONINFO::szCSDVersion)return String(OSVERSIONINFO::szCSDVersion); return String(); } inline void WinVersionInfo::init(void) { OSVERSIONINFO::dwOSVersionInfoSize=sizeof(OSVERSIONINFO); OSVERSIONINFO::dwMajorVersion=0; OSVERSIONINFO::dwMinorVersion=0; OSVERSIONINFO::dwBuildNumber=0; OSVERSIONINFO::dwPlatformId=0; OSVERSIONINFO::szCSDVersion[0]=0; } inline void WinVersionInfo::getVersionEx(void) { ::GetVersionEx(&((OSVERSIONINFO&)*this)); } #endif