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
Antwort Antwort
Seite 1 von 2  1 2      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:11
Hallo,

hab folgenden Code für die Ermittlung der Windows.Version gefunden. Hier ist aber Vista und Windows 7 nicht beachtet. Wer hat Interesse diesen Code zu erweitern? Ich brauche das und vllt auch viele andere.

Delphi-Quellcode:
const
  { operating system (OS)constants }
  cOsUnknown = -1;
  cOsWin95 = 0;
  cOsWin98 = 1;
  cOsWin98SE = 2;
  cOsWinME = 3;
  cOsWinNT = 4;
  cOsWin2000 = 5;
  cOsXP = 6;


function GetOperatingSystem: Integer;
var
  osVerInfo: TOSVersionInfo;
  majorVer, minorVer: Integer;
begin
  Result := cOsUnknown;
  { set operating system type flag }
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  if GetVersionEx(osVerInfo) then
  begin
    majorVer := osVerInfo.dwMajorVersion;
    minorVer := osVerInfo.dwMinorVersion;
    case osVerInfo.dwPlatformId of
      VER_PLATFORM_WIN32_NT: { Windows NT/2000 }
        begin
          if majorVer <= 4 then
            Result := cOsWinNT
          else if (majorVer = 5) and (minorVer = 0) then
            Result := cOsWin2000
          else if (majorVer = 5) and (minorVer = 1) then
            Result := cOsXP
          else
            Result := cOsUnknown;
        end;
      VER_PLATFORM_WIN32_WINDOWS: { Windows 9x/ME }
        begin
          if (majorVer = 4) and (minorVer = 0) then
            Result := cOsWin95
          else if (majorVer = 4) and (minorVer = 10) then
          begin
            if osVerInfo.szCSDVersion[1] = 'Athen
              Result := cOsWin98SE
            else
              Result := cOsWin98;
          end
          else if (majorVer = 4) and (minorVer = 90) then
            Result := cOsWinME
          else
            Result := cOsUnknown;
        end;
      else
        Result := cOsUnknown;
    end;
  end
  else
    Result := cOsUnknown;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(GetOperatingSystem));
end;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:12
Schau doch einfach in die Jedi (JCL). Diese dürften auf jedenfall bis W2008 kompatible sein und in kürze auch Windows 7 unterstützen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:16
Will nichts zusätzliches installieren.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:20
Zitat von AlexII:
Will nichts zusätzliches installieren.
Und wieso? Du kannst solche einfache Funktionen der Jedi auch verwenden ohne die JCL in der IDE installiert zu haben (Herunterladen, auspacken, Suchpfad ergänzen und uses-Anweisung ergänzen.

Alternativ kannst du dir den Quellcode der Jedi einfach mal anschauen was dort gemacht wurde und die Ergänzungen dann in deiner Funktion vornehmen.

Wenn du das nicht kannst, sag ich nur: Benutze die Suche. Es gibt genügend Quellcode-Beispiel zu diesem Problen in der Delphi-Praxis die auch schon Vista und W2008 berücksichtigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:23
Hab nix gefunden Na ok, mach mich auf die Such...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:28
Schau mal da: http://www.delphipraxis.net/internal...t.php?t=116695

Sollte auch ohne installation gehen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:30
Zitat von AlexII:
Hab nix gefunden Na ok, mach mich auf die Such...
Komisch nur das es schon bei der Suche nach dem Funktionsnamen Hier im Forum suchenGetOperatingSystem genügend Treffer gibt Der uralte Beispielcode der Schweizer wurde schon öfters genommen ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 11:59
Zitat von Bernhard Geyer:
Komisch nur das es schon bei der Suche nach dem Funktionsnamen Hier im Forum suchenGetOperatingSystem genügend Treffer gibt
Auf den Begriff Hier im Forum suchenGetOperatingSystem muss man auch irgendwie kommen
  Mit Zitat antworten Zitat
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, 20: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
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Windows Version ermitteln Funktion erweitern?

  Alt 15. Feb 2009, 20:28
windows 7 ist NT6.1 Und warum nimmst du nicht meine Kompo? Die erkennt fast alle Versionen und die passenden Editionen dazu
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz