Announcement

Collapse
No announcement yet.

Betriebssystem ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Betriebssystem ermitteln

    Hallo,<br>
    <br>
    wie kann man in Delphi die Version des verwendeten Betriebssystems ermitteln?<br>
    Ich möchte in meinem Programm auf die unterschiedlichen Versionen<br>
    Windows 95/98/ME/NT eingehen. Eventuell auch Windows 2000.<br>
    <br>
    Für ein Code-Beispiel wäre ich sehr dankbar.

  • #2
    Hallo,

    das folgende Beispiel aus meinem Archiv ist zwar etwas angestaubt, aber als Grundgerüst immer noch brauchbar. Der Kern besteht im Aufruf der Win32-API-Funktion <b>GetVersionEx</b>:
    <pre>
    { ************************************************** **************
    Source File Name : showverf.pas
    Typ : Formular-Unit zu showver.dpr
    Autor : Andreas Kosch
    Erstellt am : 18.05.96
    Compiler : Delphi 97
    Betriebssystem : Windows 95
    Beschreibung : Demonstriert das Auslesen der aktuellen
    Win32-API-Version.
    Revisionen : 30.03.97 Ivory
    07.06.97 Delphi 3.0 C/S
    ************************************************** ************** }

    unit showverf;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, Buttons, ExtCtrls;

    type
    TFormMain = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    LabelMajorVersion: TLabel;
    LabelMinorVersion: TLabel;
    LabelBuildNumber: TLabel;
    LabelPlatformId: TLabel;
    LabelCSDVersion: TLabel;
    BitBtnClose: TBitBtn;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Bevel5: TBevel;
    StaticTextInfo: TStaticText;
    procedure FormCreate(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    FormMain: TFormMain;

    implementation

    {$R *.DFM}

    procedure TFormMain.FormCreate(Sender: TObject);
    var
    aOSInfo : TOSVersionInfo;
    sTxt : String[12];
    begin
    // Version des Win32-API auslesen
    aOSInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
    GetVersionEx(aOSInfo);
    with aOSInfo do begin
    LabelMajorVersion.Caption := IntToStr(dwMajorVersion);
    LabelMinorVersion.Caption := IntToStr(dwMinorVersion);
    LabelBuildNumber.Caption := IntToStr(LoWord(dwBuildNumber));
    // numerischen Wert in Textanzeige verschönern
    case dwPlatformId of
    VER_PLATFORM_Win32s : sTxt := 'Win32s';
    VER_PLATFORM_WIN32_WINDOWS : sTxt := 'Windows 9x';
    VER_PLATFORM_WIN32_NT : sTxt := 'Windows NT';
    end;
    LabelPlatformId.Caption := IntToStr(dwPlatformId) +
    ' -> ' + sTxt;
    LabelCSDVersion.Caption := szCSDVersion;
    if (dwPlatformId = VER_PLATFORM_WIN32_WINDOWS)
    and (dwMajorVersion >= 4)
    and (dwMinorVersion > 0) then
    StaticTextInfo.Caption := 'Windows 98';
    end
    end;

    end.
    </pre>
    Die Tabelle mit den aktuellen MajorVersion- und MinorVersion-Nummern ist auf der Hilfeseite zu OSVERSIONINFO in der Platform SDK-Hilfe zu finden:

    <b>dwMajorVersion</b> <br>
    Windows 95 = 4 <br>
    Windows 98 = 4 <br>
    Windows Me = 4 <br>
    Windows NT 3.51 = 3 <br>
    Windows NT 4.0 = 4 <br>
    Windows 2000 = 5 <br>
    Whistler = 5 <br>

    <b>MinorVersion</b> <br>
    Windows 95 = 0 <br>
    Windows 98 = 10 <br>
    Windows Me = 90 <br>
    Windows NT 3.51 = 51 <br>
    Windows NT 4.0 = 0 <br>
    Windows 2000 = 0 <br>
    Whistler = 1<br>
    &#10

    Comment


    • #3
      Unter der JCL von Jedi (Download unter http://www.delphi-jedi.org/Jedi:CODELIBJCL:81093) gibt es die Funktion GetWindowsVersion, welche sogar die Win95 <-> Win95OSR2 und Win98 <-> Win98 SE unterscheiden kann. Kann aber in der aktuellen Version noch nicht Windows XP erkennen

      Comment

      Working...
      X