Var VI : TOSVersionInfo; OSStr : String; begin VI.dwOSVersionInfoSize := SizeOf(VI); GetVersionEX(VI); If (VI.dwPlatformID = VER_PLATFORM_WIN32s) Then OSStr := 'Windows 3.1' Else If (VI.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) And (VI.dwMinorVersion = 0) Then OSStr := 'Windows 95' Else If (VI.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) And (VI.dwMinorVersion > 0) Then OSStr := 'Windows 98' Else If (VI.dwPlatformID = VER_PLATFORM_WIN32_NT) Then OSStr := 'Windows NT' Else OSStr := 'Unknown OS System.';
function GetWindowsVersion : string; var WindowsInfo : TOSVersionInfo; begin WindowsInfo.dwOSVersionInfoSize := sizeof (OSVERSIONINFO); GetVersionEx(WindowsInfo);
case WindowsInfo.dwPlatformId of VER_PLATFORM_WIN32_NT: begin if ( WindowsInfo.dwMajorVersion <= 4 ) then result := 'Microsoft Windows NT';
if (( WindowsInfo.dwMajorVersion = 5 ) and (WindowsInfo.dwMinorVersion = 0)) then result := 'Microsoft Windows 2000' else if (( WindowsInfo.dwMajorVersion = 5 ) and (WindowsInfo.dwMinorVersion > 1)) then result := 'Microsoft Windows XP'; end; VER_PLATFORM_WIN32_WINDOWS: begin if ((WindowsInfo.dwMajorVersion > 4) or ((WindowsInfo.dwMajorVersion = 4) and (WindowsInfo.dwMinorVersion = 0))) then result := 'Microsoft Windows 98' else if ((WindowsInfo.dwMajorVersion > 4) or ((WindowsInfo.dwMajorVersion = 4) and (WindowsInfo.dwMinorVersion = 90))) then result := 'Microsoft Windows ME' else result := 'Microsoft Windows 95'; end; else result := 'Win32s'; end; end;
Den fortæller godt nok ikke om det er Server eller Pro. men den kigger jeg lige lidt mere på !
P.S. Gør det til en vane at fortælle os alle informationerne fra starten af i stedet for at vi skal bruge tid på noget som du alligevel ikke kan bruge ! ;)
I C kan man bruge nedenstående, men der er nogle af VER_ variablerne som ikke findes i Delphi. Ved ikke lige helt hvordan den skal krejles !? ;/
// Tests for Windows NT product family. case VER_PLATFORM_WIN32_NT:
// Test for the product.
if ( osvi.dwMajorVersion <= 4 ) printf("Microsoft Windows NT ");
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) printf ("Microsoft Windows 2000 ");
if( bOsVersionInfoEx ) // Use information from GetVersionEx. { // Test for the workstation type. if ( osvi.wProductType == VER_NT_WORKSTATION ) { if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) printf ("Microsoft Windows XP ");
// Test for the server type. else if ( osvi.wProductType == VER_NT_SERVER ) { if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) printf ("Microsoft Windows .NET ");
desværre, det er nødvendigt at skelne mellem win2k server og alle andre styresystemer i delphi...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.