SOL9 2.0 Class: WindowsVersion

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree  SOL9 ClassList 

Source code

/******************************************************************************
 *
 * Copyright (c) 1999-2015 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer.
 *  
 * 2. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 *  WindowsVersion.h
 *
 *****************************************************************************/

// 2011/09/04 Modified a member function isVista and added a new meber function isWindows7.
// 2015/12/20 Updated.
// 2015/12/27
 
#pragma once

#include <sol\Object.h>
//#include <io.h>


namespace SOL {

class WindowsVersion :public Object {
private:
  OSVERSIONINFOEX versionInfo;

public:
  /**
   * Constructor
   */
  WindowsVersion() {
    memset(&versionInfo, 0, sizeof(OSVERSIONINFOEX));
    versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  }

public:
  /**
   */
  bool getVersion(DWORD& dwPlatformId, 
      DWORD& dwMajorVersion, 
      DWORD& dwMinorVersion) {

    bool rc = false;

    memset(&versionInfo, 0, sizeof(OSVERSIONINFOEX));
  
    versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

    if (GetVersionEx((OSVERSIONINFO*)&versionInfo) == 0) {

      versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
      GetVersionEx((OSVERSIONINFO*)&versionInfo);
    }

    dwPlatformId   = versionInfo.dwPlatformId;
    dwMajorVersion = versionInfo.dwMajorVersion;
    dwMinorVersion = versionInfo.dwMinorVersion;

    rc = true;

    return rc;
  }

public:
  /**
   */
  bool isVista() {
    bool rc = false;

    DWORD dwPlatformId; 
    DWORD dwMajorVersion; 
    DWORD dwMinorVersion;
    
    getVersion(dwPlatformId, 
        dwMajorVersion, 
        dwMinorVersion);
    if (dwPlatformId == VER_PLATFORM_WIN32_NT &&
        dwMajorVersion == 6 &&
        dwMinorVersion == 0) {
      rc = true;
    }

    return rc;
  }


    
  bool isWindows7() {
    bool rc = false;

    DWORD dwPlatformId; 
    DWORD dwMajorVersion; 
    DWORD dwMinorVersion;
    
    getVersion(dwPlatformId, 
        dwMajorVersion, 
        dwMinorVersion);
    if (dwPlatformId == VER_PLATFORM_WIN32_NT &&
        dwMajorVersion == 6 &&
        dwMinorVersion == 1) {
      rc = true;
    }

    return rc;
  }

  bool isWindows8() {
    bool rc = false;

    DWORD dwPlatformId; 
    DWORD dwMajorVersion; 
    DWORD dwMinorVersion;
    
    getVersion(dwPlatformId, 
        dwMajorVersion, 
        dwMinorVersion);
    if (dwPlatformId == VER_PLATFORM_WIN32_NT &&
        dwMajorVersion == 6 &&
        dwMinorVersion == 2) {
      rc = true;
    }

    return rc;
  }

  bool isWindows81() {
    bool rc = false;

    DWORD dwPlatformId; 
    DWORD dwMajorVersion; 
    DWORD dwMinorVersion;
    
    getVersion(dwPlatformId, 
        dwMajorVersion, 
        dwMinorVersion);
    if (dwPlatformId == VER_PLATFORM_WIN32_NT &&
        dwMajorVersion == 6 &&
        dwMinorVersion == 3) {
      rc = true;
    }
    return rc;
  }
  

  bool isWindows10() {
    bool rc = false;

    DWORD dwPlatformId; 
    DWORD dwMajorVersion; 
    DWORD dwMinorVersion;
    
    getVersion(dwPlatformId, 
        dwMajorVersion, 
        dwMinorVersion);
    if (dwPlatformId == VER_PLATFORM_WIN32_NT &&
        dwMajorVersion == 6 &&
        dwMinorVersion == 4) {
      rc = true;
    }
    return rc;
  }
};

}


Last modified: 5 May 2019

Copyright (c) 2009-2019 Antillia.com ALL RIGHTS RESERVED.