Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen? (https://www.delphipraxis.net/177463-windows-8-1-wie-buildnumber-9600-angezeigt-bekommen.html)

08115 7. Nov 2013 17:25


Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Hallo DP,

wie kriegt man ein/sein/mein Programm dazu, die aktuelle Version von Windows auszugeben?

Dafür gibt es viele Units im Internet und viele Units in der DP.

Aber selbstverstaendlich *keine* Unit, die das kann, was ich will!

Daher Selbst-ist-der-Heimwerker:

Delphi-Quellcode:
unit UnitZeigeWindowsVersion;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function GetWindowsVersion(ShortInfo: Boolean): string;
var
  VerInfo: TOsversionInfo;
  PlatformId, VersionNumber: string;
  BuildNumber: string; // mein Pfusch!
  Reg: TRegistry;
begin
  VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
  GetVersionEx(VerInfo);
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  case VerInfo.dwPlatformId of
    VER_PLATFORM_WIN32s:
      begin
        PlatformId := 'Windows 3.1';
      end;
    VER_PLATFORM_WIN32_WINDOWS:
      begin
        Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion', False);
        PlatformId := Reg.ReadString('ProductName');
        VersionNumber := Reg.ReadString('VersionNumber');
        BuildNumber := Reg.ReadString('CurrentBuildNumber'); // mein Pfusch!
      end;
    VER_PLATFORM_WIN32_NT:
      begin
        Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion', False);
        PlatformId := Reg.ReadString('ProductName');
        VersionNumber := Reg.ReadString('CurrentVersion');
        BuildNumber := Reg.ReadString('CurrentBuildNumber'); // mein Pfusch!
      end;
  end;
  Reg.Free;
  if shortinfo then
    Result := '(' + VersionNumber + '/' + BuildNumber + ')' else
    Result := PlatformId + ' (Version ' + VersionNumber + '/Build ' + BuildNumber + ')';
end;


procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
  s := GetWindowsVersion(false); // Kurzinfo
  MessageBox(Handle, PChar(s), 'Infokram (false) unter D5', mb_Ok or mb_IconInformation or mb_DefButton1);
  s := GetWindowsVersion(true); // Langinfo
  MessageBox(Handle, PChar(s), 'Infokram (true) unter D5', mb_Ok or mb_IconInformation or mb_DefButton1);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Button1Click(self);
  PostQuitMessage(666); // Teufelszeug!
end;

end.
Auf dem Formular ist nur ein Button.

Entwickelt/getestet mit Delphi5/WinXP, Windows 8 und Windows 8.1.

Dankbare Gruesse von einem Mitleser!

Union 7. Nov 2013 18:07

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Kannst Du bitte die [ DELPHI] - Tags verwenden, da sonst Augenkrebs ensteht.

Popov 7. Nov 2013 18:10

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Ich denke das ist ein Zweitaccount. Der fehlende DELPHI-Tag soll nach einem Newbie aussehen ;)

08115 7. Nov 2013 18:18

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Zitat:

Zitat von Popov (Beitrag 1234979)
Ich denke das ist ein Zweitaccount. Der fehlende DELPHI-Tag soll nach einem Newbie aussehen ;)

Falsch, ist ein ErstAccount.

Aber interessant, wie sich "welpengeschützt" plötzlich wieder erinnern kann...

:thumb:

Popov 7. Nov 2013 18:29

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Mal sehen.

Da du aber die Tags für zitieren kennst und auch Smilies beherrscht, ist es nicht dein erster Beitrag in einen Forum. Nur den wichtigsten Tag in dem Forum kennst du anscheinend nicht.

Also nach oben scrollen, auf "Bearbeiten" klicken und den Code schön in DELPHI-Tags packen.

08115 7. Nov 2013 18:34

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Zitat:

Zitat von Popov (Beitrag 1234983)
Mal sehen.

Da du aber die Tags für zitieren kennst und auch Smilies beherrscht, ist es nicht dein erster Beitrag in einen Forum. Nur den wichtigsten Tag in dem Forum kennst du anscheinend nicht.

Also nach oben scrollen, auf "Bearbeiten" klicken und den Code schön in DELPHI-Tags packen.

Ab welcher Beitragsanzahl bekommt man eigentlich den A-Bonus?

Popov 7. Nov 2013 18:42

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Was ist eigentlich der Sinn des Ganzen?

holliesoft 7. Nov 2013 19:05

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Hallo zusammen,

um wieder "on-topic" zu kommen:
Die API Funktion zur Ermittlung der Windows-Version ist seit Windows 8.1 deprecated.

Bernhard Geyer 7. Nov 2013 19:10

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Zitat:

Zitat von holliesoft (Beitrag 1234991)
um wieder "on-topic" zu kommen:
Die API Funktion zur Ermittlung der Windows-Version ist seit Windows 8.1 deprecated.

Oh man. Ein Großteil der Windows-Programme wird mal wieder scheitern weil genau diese Änderung durchgeführt wurde. :wall:

Dalai 7. Nov 2013 19:28

AW: Windows 8.1 - wie BuildNumber 9600 angezeigt bekommen?
 
Darf ich trotzdem noch darauf hinweisen, dass TRegistry.OpenKey im HKLM Adminrechte benötigt und man deshalb - weil man eh nur lesen will - TRegistry.OpenKeyReadOnly verwenden (oder alternativ TRegistry.Access passend setzen) sollte?

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 1 von 2  1 2      

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