![]() |
Windows-Version auslesen, auch XP 64-Bit und Vista?
Hallo,
ich möchte unter Delphi 6 Professional mit folgender Funktion die Version des installierten Windows auslesen:
Delphi-Quellcode:
Das funktioniert auch ganz gut, ausser unter Windows XP 64-Bit und Windows Vista. Es wird dann einfach 'cOsUnknown' zurückgegeben. Wie muss die Funktion erweitert werden, damit auch diese Betriebssysteme erfasst werden?
function GetOperatingSystem(): Integer;
// Bestimmt die Versionsnummer des Betriebssystems. var osVerInfo: TOSVersionInfo; majorVer, minorVer: Integer; begin osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); if GetVersionEx(osVerInfo) then begin majorVer := osVerInfo.dwMajorVersion; minorVer := osVerInfo.dwMinorVersion; case osVerInfo.dwPlatformId of // Windows NT/2000 VER_PLATFORM_WIN32_NT: 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; // Windows 9x/ME VER_PLATFORM_WIN32_WINDOWS: 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; Oder gibt es eine Alternative, die diese beiden Betriebssysteme auch erkennt? Vielen Dank im Voraus, Luzzi. |
Re: Windows-Version auslesen, auch XP 64-Bit und Vista?
HI, du findest die Infos im Plattform SDK (PSDK), dass wiederum liegt Delphi bei, findet sich aber immer aktuell auch beim Hersteller! Z.B. Online unter:
![]() und für die NTs auch ![]() Gruß Der Unwissende |
Re: Windows-Version auslesen, auch XP 64-Bit und Vista?
Zitat:
D.h. eine erweiterung dieses case-konstrukts:
Delphi-Quellcode:
natuerlich muss TOSVersionInfo auch dementsprechend erweitert werden ;)
case osVerInfo.dwPlatformId of
// Windows NT/2000 VER_PLATFORM_WIN32_NT: 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 if (majorVer = 6) then Result := cOsVista else Result := cOsUnknown; end; Was die Architektur betrifft, sollte die EnvironmentVariable "PROCESSOR_ARCHITECTURE" gute Dienste leisten. Ein Aufruf von ![]() Allerdings: Angaben ohne Gewaehr ;) greetz Mike |
Re: Windows-Version auslesen, auch XP 64-Bit und Vista?
Vielen Dank!!
@JasonDX: XP x64 hat die Versionsnummer 5.2, der Block muss also für beide fragwürdigen Betriebssysteme folgendermaßen erweitert werden, denke ich:
Delphi-Quellcode:
// Windows NT/2000
VER_PLATFORM_WIN32_NT: 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 if (majorVer = 5) and (minorVer = 2) then Result := cOsXP64 else if majorVer = 6 then Result := cOsVista else Result := cOsUnknown; end; Zitat:
|
Re: Windows-Version auslesen, auch XP 64-Bit und Vista?
schaut mal in die Codelib, da gibts einen Code von mir, der schon viele Windowsversionen erfasst. Bald gibts ein Update um dann bis auf die N Editions alle Versionne zu erkennen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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