Avatar billede petersss Nybegynder
24. februar 2002 - 01:02 Der er 6 kommentarer og
1 løsning

styresystem?

hvilken funktion returnerer det pågældende styresystem programmet køres på?
Avatar billede snowball Novice
24. februar 2002 - 01:12 #1
Tilføj SysUtils under Uses og brug følgende kode:

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.';

  Label1.Caption := OSStr;
end;


Snowball
Avatar billede petersss Nybegynder
24. februar 2002 - 01:31 #2
Jeg har brug for at klassificere mellem win2k server, win2k pro (eller xp), eller ikke nogle af førnævnte...
Avatar billede snowball Novice
24. februar 2002 - 01:40 #3
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 ! ;)

Snowball
Avatar billede petersss Nybegynder
24. februar 2002 - 01:42 #4
hehe undskyld... Jeg kan lige så godt sige med det samme at det har størst betydning om det er Win2k server eller win2k pro
Avatar billede petersss Nybegynder
24. februar 2002 - 01:49 #5
Hmm din kode returnerer en tom streng, jeg sidder på xp...
Avatar billede snowball Novice
24. februar 2002 - 02:05 #6
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 ");

              if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
                  printf ( "Home Edition " );
              else
                  printf ( "Professional " );
            }

        // Test for the server type.
            else if ( osvi.wProductType == VER_NT_SERVER )
            {
              if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
                  printf ("Microsoft Windows .NET ");

              if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
                  printf ( "DataCenter Server " );
              else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                  if( osvi.dwMajorVersion == 4 )
                    printf ("Advanced Server " );
                  else
                    printf ( "Enterprise Server " );
              else if ( osvi.wSuiteMask == VER_SUITE_BLADE )
                  printf ( "Web Server " );
              else
                  printf ( "Server " );
            }
        }


Snowball
Avatar billede petersss Nybegynder
24. februar 2002 - 02:07 #7
desværre, det er nødvendigt at skelne mellem win2k server og alle andre styresystemer i delphi...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester