![]() |
Windows Version ermitteln Funktion erweitern?
Hallo,
hab ![]()
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] = 'A' then 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; |
Re: Windows Version ermitteln Funktion erweitern?
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.
|
Re: Windows Version ermitteln Funktion erweitern?
Will nichts zusätzliches installieren.
|
Re: Windows Version ermitteln Funktion erweitern?
Zitat:
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. |
Re: Windows Version ermitteln Funktion erweitern?
Hab nix gefunden :gruebel: Na ok, mach mich auf die Such...
|
Re: Windows Version ermitteln Funktion erweitern?
Schau mal da:
![]() Sollte auch ohne installation gehen ;) |
Re: Windows Version ermitteln Funktion erweitern?
Zitat:
![]() |
Re: Windows Version ermitteln Funktion erweitern?
Zitat:
![]() |
Re: Windows Version ermitteln Funktion erweitern?
Damit ein weiterer Ableger der hier verwendeten Version herum schwirrt, auch mal meine angepasste Version:
Delphi-Quellcode:
Hab' es jetzt nur mit XP und Win98SE (Virtuell) getestet, sollte aber trotz Umbau der Kernfunktion richtig arbeiten.
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] = 'A' then 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; |
Re: Windows Version ermitteln Funktion erweitern?
windows 7 ist NT6.1 ;) Und warum nimmst du nicht meine Kompo? Die erkennt fast alle Versionen und die passenden Editionen dazu ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 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 by Thomas Breitkreuz