Code:
enum { WIN_2000 = 0, WIN_XP, WIN_VISTA, WIN_7 };
Im folgenden habe ich kurz eine Funktion geschrieben, die das OS gemäß unserer Enumeration als Integer-Wert zurückgibt:
Code:
int GetWinVersion() { OSVERSIONINFO info; OSVERSIONINFOEX ex; ZeroMemory( &info, sizeof( OSVERSIONINFO ) ); ZeroMemory( &ex, sizeof( OSVERSIONINFOEX ) ); info.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ); ex.dwOSVersionInfoSize = sizeof( OSVERSIONINFOEX ); GetVersionEx( &info ); GetVersionEx( ( OSVERSIONINFO * ) &ex ); if( info.dwMajorVersion == 5 && info.dwMinorVersion == 0 ) return WIN_2000; if( info.dwMajorVersion == 5 && info.dwMinorVersion == 1 ) return WIN_XP; if( info.dwMajorVersion == 6 && info.dwMinorVersion == 0 && ex.wProductType == VER_NT_WORKSTATION ) return WIN_VISTA; if( info.dwMajorVersion == 6 && info.dwMinorVersion == 1 && ex.wProductType == VER_NT_WORKSTATION ) return WIN_7; return -1; }
Hier mal der Link zu den Strukturen:
Wenn du die Links verfolgst, findest du eben auch eine Tabelle vor, die die genauen Werte für die Bestimmung des OS enthält.
Joa und das wärs auch schon. Hier noch mal ein kleiner Beispielcode für die Verwendung der Funktion:
Code:
#include <iostream> #include <windows.h> using namespace std; enum { WIN_2000 = 0, WIN_XP, WIN_VISTA, WIN_7 }; int GetWinVersion(); int main() { int ver = GetWinVersion(); switch( ver ) { case -1: cout << "Unbekannte Win Version...\n"; break; case WIN_2000: cout << "Du hast Win2000\n"; break; case WIN_XP: cout << "Du hast WinXP\n"; break; case WIN_VISTA: cout << "Du hast WinVISTA\n"; break; case WIN_7: cout << "Du hast Win7\n"; break; } cin.get(); return 0; } int GetWinVersion() { OSVERSIONINFO info; OSVERSIONINFOEX ex; ZeroMemory( &info, sizeof( OSVERSIONINFO ) ); ZeroMemory( &ex, sizeof( OSVERSIONINFOEX ) ); info.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ); ex.dwOSVersionInfoSize = sizeof( OSVERSIONINFOEX ); GetVersionEx( &info ); GetVersionEx( ( OSVERSIONINFO * ) &ex ); if( info.dwMajorVersion == 5 && info.dwMinorVersion == 0 ) return WIN_2000; if( info.dwMajorVersion == 5 && info.dwMinorVersion == 1 ) return WIN_XP; if( info.dwMajorVersion == 6 && info.dwMinorVersion == 0 && ex.wProductType == VER_NT_WORKSTATION ) return WIN_VISTA; if( info.dwMajorVersion == 6 && info.dwMinorVersion == 1 && ex.wProductType == VER_NT_WORKSTATION ) return WIN_7; return -1; }