?? test.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 + -