AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Windows Version ermitteln Funktion erweitern?
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Version ermitteln Funktion erweitern?

Ein Thema von AlexII · begonnen am 15. Feb 2009 · letzter Beitrag vom 15. Feb 2009
 
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 19:12
Damit ein weiterer Ableger der hier verwendeten Version herum schwirrt, auch mal meine angepasste Version:
Delphi-Quellcode:
type
  TOperationSystems = (gos_unknown, gos_Win95, gos_Win98, gos_Win98SE, gos_WinME,
                       gos_WinNT, gos_Win2k, gos_WinXP, gos_Vista, gos_Win7, gos_WinNewer);

function GetOSfriendlyName(OperationSystem : TOperationSystems):String;
var
  osVerInfo: TOSVersionInfo;
begin
  // GetVersionEx zum ermitteln der Zusatzinformationen
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  GetVersionEx(osVerInfo);

  case OperationSystem of
    gos_Win95 : Result := '95';
    gos_Win98 : Result := '98';
    gos_Win98SE : Result := '98SE';
    gos_WinME : Result := 'ME';
    gos_WinNT : Result := 'NT';
    gos_Win2k : Result := '2000';
    gos_WinXP : Result := 'XP';
    gos_Vista : Result := 'VISTA';
    gos_Win7 : Result := '7';
    gos_WinNewer: Result := '7+';
  else
    Result := '';
  end;

  Result := 'Windows '+Result + ' ['+
            IntToStr(osVerInfo.dwMajorVersion)+'.'+
            IntToStr(osVerInfo.dwMinorVersion)+'.'+
            IntToStr(osVerInfo.dwBuildNumber)+'] '+
            osVerInfo.szCSDVersion;
end;

function GetOperatingSystem: TOperationSystems;
var
  osVerInfo: TOSVersionInfo;
  majorVer, minorVer: Integer;
begin
  // GetVersionEx zum ermitteln der Versionsnummer
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  if GetVersionEx(osVerInfo) then begin

    // Hilfsvariablen zur leichteren Fallunterscheidung
    majorVer := osVerInfo.dwMajorVersion;
    minorVer := osVerInfo.dwMinorVersion;

    // Nach alter und neuer Kernelbaureihe aufteilen
    case osVerInfo.dwPlatformId of

      // Windows NT/2000/XP/Vista und neuer
      VER_PLATFORM_WIN32_NT: begin
        case majorVer of
          0..4 : Result := gos_WinNT;
             5 : if minorVer = 0 then Result := gos_Win2K
                   else Result := gos_WinXP;
             6 : if minorVer = 0 then Result := gos_Vista
                   else Result := gos_Win7;
        else
          Result := gos_WinNewer;
        end;
      end;

      // Windows 95/98/ME
      VER_PLATFORM_WIN32_WINDOWS: begin
        if majorVer = 4 then begin

          case minorVer of
             0 : Result := gos_Win95;
            10 : if osVerInfo.szCSDVersion[1] = 'Athen Result := gos_Win98SE
                   else result := gos_Win98;
            90 : Result := gos_WinME;
          else
            Result := gos_Unknown;
          end;

        // <> Major Version 4
        end else Result := gos_Unknown;

      end;

    // Case osVerInfo.dwPlatformId of
    else
      Result := gos_Unknown;
    end;

  // Aufruf von GetVersionEx() fehlgeschlagen
  end else Result := gos_Unknown;
end;

procedure TForm.FormCreate(Sender: TObject);
begin
  LabelWindows.Caption := GetOSfriendlyName(GetOperatingSystem);
end;
Hab' es jetzt nur mit XP und Win98SE (Virtuell) getestet, sollte aber trotz Umbau der Kernfunktion richtig arbeiten.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz