osversion.hpp

Upload User: wangcyou
Upload Date: 2007-01-01
Package Size: 142k
Code Size: 3k
Category: Windows Develop
Development Platform: Visual C++
  1. //---------------------------------------------------------------------------
  2. // Copyright (C) 1998, Interscope Ltd. All rights reserved.
  3. // Reproduction or distribution of this program, or any portion of it, 
  4. // is permitted only if this header is kept as it is.
  5. // For more information, contact:
  6. //
  7. // Interscope Ltd., 5 Culturii St., 5th Floor, 4800 Baia Mare, RO
  8. //    Phone/Fax: +40-62-215023
  9. //    E-mail: office@interscope.ro
  10. //
  11. //   $Author: Levente Farkas $
  12. //     $Date: 5/13/98 12:03a $
  13. //  $Modtime: 4/27/98 6:50a $
  14. // $Revision: 17 $
  15. //  $Archive: /Interscope/Thebe/InstallMaster/OSVersion.Hpp $
  16. // $Workfile: OSVersion.Hpp $
  17. //-----------------------------------------------------------------------------
  18. #ifndef __OperatingSystemVersion_Hpp__
  19. #define __OperatingSystemVersion_Hpp__
  20. // Define the following symbol if compiling using precompiled headers through 
  21. // header file StdAfx.H
  22. // #define __STDAFX__
  23. //
  24. // Define the following symbol if used in a MFC project
  25. // #define __MFC__
  26. #ifdef __MFC__
  27. #undef __STDAFX__
  28. #define __STDAFX__
  29. #endif
  30. #if !defined(__WIN32__) && !defined(_WIN32)
  31. #ifndef STRICT
  32. #define STRICT
  33. #endif
  34. #endif // __WIN32__
  35. #include <Windows.H>
  36. #if defined(__WIN32__) || defined(_WIN32)
  37. #include <WinVer.H>
  38. #else
  39. #include <Ver.H>
  40. #endif
  41. //--- Extended OS and Win32 (tm) version types --------------------------------
  42. #define OS_UNKNOWN      0x0000
  43. #define OS_WIN3X        0x0001
  44. #define OS_WFW          0x0002
  45. #define OS_WIN95        0x0004
  46. #define OS_WIN98        0x0008
  47. #define OS_WINNTWS      0x0010  // Workstation
  48. #define OS_WINNTS       0x0020  // Server
  49. #define OS_WINNTAS      0x0040  // Advanced server (only if older than 4.0)
  50. #define OS_WINNT        (OS_WINNTWS | OS_WINNTS | OS_WINNTAS)
  51. #define WIN_UNKNOWN     0x0000
  52. #define WIN_16          0x0100
  53. #define WIN_32          0x0200
  54. #define WIN_32S         0x0400
  55. #define WIN_32C         0x0800
  56. //--- Windows 4 Workgroups detection methods --------------------------------
  57. #define METHOD_MULTINET   1
  58. #define MEHOD_FILEVERSION 2
  59. //--- OS version checker class ----------------------------------------------
  60. class COSVersion
  61. {
  62. // Type(s)
  63. protected:
  64.     struct VS_VERSION 
  65.     {
  66.         WORD wTotLen;
  67.         WORD wValLen;
  68.         char szSig[16];
  69.         VS_FIXEDFILEINFO vffInfo;
  70.     };
  71. // Data members
  72. private:
  73.     WORD  m_nOSType;
  74.     WORD  m_nWinType;
  75.     DWORD m_dwVersion;
  76.     #if defined(__WIN32__) || defined(_WIN32)
  77.     OSVERSIONINFO osvi;
  78.     #endif
  79. // Construction
  80. public:
  81.     COSVersion();
  82. // Implementation
  83. public:
  84.     WORD  GetOSType()       const { return m_nOSType;  }  // Returns one of the OS_ constants
  85.     WORD  GetWindowsType()  const { return m_nWinType; }  // Returns one of the WIN_ constants
  86.     DWORD GetMajorVersion() const;
  87.     DWORD GetMinorVersion() const;
  88.     #if defined(__WIN32__) || defined(_WIN32)
  89.     DWORD   GetBuildNumber() const;
  90. LPCTSTR GetSpecialVersion() const;
  91.     #endif
  92. // Helper(s)
  93. private:
  94.     BOOL IsWindows4Workgroups(unsigned short usMethod);
  95. };
  96. #endif