⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 VC++源代码
💻 CPP
字号:
#include <windows.h> 
#ifdef _WIN32
#include <tchar.h>
#endif
#include <memory.h>
#include <stdio.h>    
#include <string.h>
#include "dtwinver.h"


#ifndef _WIN32
  #define _stprintf sprintf
  #define _tcscat strcat
  #define _T(x) x
#endif

#ifdef _WINDOWS
#ifdef UNDER_CE
int WINAPI WinMain(HINSTANCE /*hInstance*/,  HINSTANCE /*hPrevInstance*/, LPWSTR /*lpCmdLine*/, int /*nCmdShow*/)
#elif _WIN32
int WINAPI WinMain(HINSTANCE /*hInstance*/,  HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int /*nCmdShow*/)
#else                                                                                                            
int PASCAL WinMain(HINSTANCE /*hInstance*/,  HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int /*nCmdShow*/)
#endif
#else
int main()
#endif
{                                  
  OS_VERSION_INFO osvi;
  memset(&osvi, 0, sizeof(OS_VERSION_INFO));
#ifdef _WIN32
  TCHAR sText[512];
  TCHAR sBuf[100];
#else
  char sText[512];
  char sBuf[100];
#endif
  
  if (GetOSVersion(&osvi))
  {                                           
    _stprintf(sText, _T("Emulated OS: "));
    
    switch (osvi.dwEmulatedPlatformId)
    {
      case PLATFORM_DOS:               
      {
        _stprintf(sBuf, _T("Dos"));
        break;
      }
      case PLATFORM_WINDOWS31:         
      {
        _stprintf(sBuf, _T("Windows"));
        break;
      }
      case PLATFORM_WINDOWSFW:         
      {
        _stprintf(sBuf, _T("Windows For Workgroups"));
        break; 
      }
      case PLATFORM_WIN32S:
      {
        _stprintf(sBuf, _T("Win32s"));
        break; 
      }
      case PLATFORM_WINDOWS_CE:
      {
        _stprintf(sBuf, _T("Windows CE"));
        break;
      }
      case PLATFORM_WINDOWS:
      {
        if (IsWindows95(&osvi))
          _stprintf(sBuf, _T("Windows 95"));
        else if (IsWindows95SP1(&osvi))
          _stprintf(sBuf, _T("Windows 95 SP1"));
        else if (IsWindows95OSR2(&osvi))
          _stprintf(sBuf, _T("Windows 95 OSR2"));
        else if (IsWindows98(&osvi))
          _stprintf(sBuf, _T("Windows 98"));
        else if (IsWindows98SP1(&osvi))
          _stprintf(sBuf, _T("Windows 98 SP1"));
        else if (IsWindows98SE(&osvi))
          _stprintf(sBuf, _T("Windows 98 Second Edition"));
        else
          _stprintf(sBuf, _T("Windows ??"));
        break;
      }
      case PLATFORM_NT_WORKSTATION:
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Professional"));
        else
          _stprintf(sBuf, _T("Windows NT Workstation"));
        break;
      }
      case PLATFORM_NT_PRIMARY_DOMAIN_CONTROLLER:         
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Server (Acting as Primary Domain Controller)"));
        else
          _stprintf(sBuf, _T("Windows NT Server (Acting as Primary Domain Controller)"));
        break;
      }
      case PLATFORM_NT_BACKUP_DOMAIN_CONTROLLER:         
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Server (Acting as Backup Domain Controller)"));
        else
          _stprintf(sBuf, _T("Windows NT Server (Acting as Backup Domain Controller)"));
        break;
      }
      case PLATFORM_NT_STAND_ALONE_SERVER:
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Server (Acting as Standalone Sever)"));
        else
          _stprintf(sBuf, _T("Windows NT Server (Acting as Standalone Sever)"));
        break;
      }
      case PLATFORM_WINDOWS_TERMINAL_SERVER:
      {
        _stprintf(sBuf, _T("Windows NT Terminal Server"));
        break;
      }
      case PLATFORM_NT_ENTERPRISE_SERVER:
      {
        _stprintf(sBuf, _T("Windows NT Enterprise Edition"));
        break;
      }
      default: 
      {
        _stprintf(sBuf, _T("Unknown OS"));
        break;
      }
    }                     
    _tcscat(sText, sBuf);
    _stprintf(sBuf, _T(" v%d."), osvi.dwEmulatedMajorVersion);
    _tcscat(sText, sBuf);     
    _stprintf(sBuf, _T("%02d "), osvi.dwEmulatedMinorVersion);
    _tcscat(sText, sBuf);                           
    if (osvi.dwEmulatedBuildNumber)
    {
      _stprintf(sBuf, _T("Build:%d"), osvi.dwEmulatedBuildNumber);
      _tcscat(sText, sBuf);           
    }
    if (osvi.wEmulatedServicePack)       
    {
      _stprintf(sBuf, _T(" Service Pack:%d"), osvi.wEmulatedServicePack);
      _tcscat(sText, sBuf);
    }                            
    _tcscat(sText, _T(" \n"));        
    
    _stprintf(sBuf, _T("Underlying OS: "));
    _tcscat(sText, sBuf);
                                                         
    switch (osvi.dwUnderlyingPlatformId)
    {
      case PLATFORM_DOS:               
      {
        _stprintf(sBuf, _T("Dos"));
        break;
      }
      case PLATFORM_WINDOWS31:         
      {
        _stprintf(sBuf, _T("Windows"));
        break;
      }
      case PLATFORM_WINDOWSFW:         
      {
        _stprintf(sBuf, _T("Windows For Workgroups"));
        break;
      }
      case PLATFORM_WIN32S:            
      {
        _stprintf(sBuf, _T("Win32s"));
        break;
      }
      case PLATFORM_WINDOWS_CE:            
      {
        _stprintf(sBuf, _T("Windows CE"));
        break;
      }
      case PLATFORM_WINDOWS:           
      {
        if (IsWindows95(&osvi))
          _stprintf(sBuf, _T("Windows 95"));
        else if (IsWindows95SP1(&osvi))
          _stprintf(sBuf, _T("Windows 95 SP1"));
        else if (IsWindows95OSR2(&osvi))
          _stprintf(sBuf, _T("Windows 95 OSR2"));
        else if (IsWindows98(&osvi))
          _stprintf(sBuf, _T("Windows 98"));
        else if (IsWindows98SP1(&osvi))
          _stprintf(sBuf, _T("Windows 98 SP1"));
        else if (IsWindows98SE(&osvi))
          _stprintf(sBuf, _T("Windows 98 Second Edition"));
        else
          _stprintf(sBuf, _T("Windows ??"));
        break;
      }
      case PLATFORM_NT_WORKSTATION:    
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Professional"));
        else
          _stprintf(sBuf, _T("Windows NT Workstation"));
        break;
      }
      case PLATFORM_NT_PRIMARY_DOMAIN_CONTROLLER:         
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Server (Acting as Primary Domain Controller)"));
        else
          _stprintf(sBuf, _T("Windows NT Server (Acting as Primary Domain Controller)"));
        break;
      }
      case PLATFORM_NT_BACKUP_DOMAIN_CONTROLLER:         
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Server (Acting as Backup Domain Controller)"));
        else
          _stprintf(sBuf, _T("Windows NT Server (Acting as Backup Domain Controller)"));
        break;
      }
      case PLATFORM_NT_STAND_ALONE_SERVER:
      {
        if (IsWindows2000(&osvi))
          _stprintf(sBuf, _T("Windows 2000 Server (Acting as Standalone Sever)"));
        else
          _stprintf(sBuf, _T("Windows NT Server (Acting as Standalone Sever)"));
        break;
      }
      case PLATFORM_WINDOWS_TERMINAL_SERVER:
      {
        _stprintf(sBuf, _T("Windows NT Terminal Server"));
        break;
      }
      case PLATFORM_NT_ENTERPRISE_SERVER:
      {
        _stprintf(sBuf, _T("Windows NT Enterprise Edition"));
        break;
      }
      default:                         
      {
        _stprintf(sBuf, _T("Unknown OS"));
        break;
      }
    }                                      
    _tcscat(sText, sBuf);        
    _stprintf(sBuf, _T(" v%d."), osvi.dwUnderlyingMajorVersion);
    _tcscat(sText, sBuf);     
    _stprintf(sBuf, _T("%02d "), osvi.dwUnderlyingMinorVersion);
    _tcscat(sText, sBuf);          
    if (osvi.dwUnderlyingBuildNumber)
    {
      _stprintf(sBuf, _T("Build:%d"), osvi.dwUnderlyingBuildNumber);
      _tcscat(sText, sBuf);
    }
    if (osvi.wUnderlyingServicePack)       
    {
      _stprintf(sBuf, _T(" Service Pack:%d"), osvi.wUnderlyingServicePack);
      _tcscat(sText, sBuf);
    }                    
    _tcscat(sText, _T(" \n"));    
  }
  else
    _stprintf(sText, _T("Failed in call to GetOSVersion\n"));
                 
  #ifdef _WINDOWS
    MessageBox(NULL, sText, _T("Operating System details"), MB_OK);
  #else
    printf(sText);
  #endif       
  
  BOOL bSuccess = IsWindows95(&osvi);
  bSuccess = IsWindows95SP1(&osvi);
  bSuccess = IsWindows95OSR2(&osvi);
  bSuccess = IsWindows98(&osvi);
  bSuccess = IsWindowsNT31(&osvi);
  bSuccess = IsWindowsNT35(&osvi);
  bSuccess = IsWindowsNT351(&osvi);
  bSuccess = IsWindowsNT4(&osvi);
  bSuccess = IsWindows2000(&osvi);
                 
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -