Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   OS Version wird nicht erkannt (https://www.delphipraxis.net/158416-os-version-wird-nicht-erkannt.html)

EWeiss 16. Feb 2011 17:29

OS Version wird nicht erkannt
 
Meine Funktion zur Erkennung der OS Version funktioniert einwandfrei mit D2006 in der IDE
Das gleiche in D2009 gibt mir immer XP als Rückgabe in der IDE.

Wird die EXE kompiliert gestartet erkennt er aber das richtig OS.
Sehr seltsam das ganze.

Delphi-Quellcode:
function OsVersion: Integer;
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

      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) and (minorVer = 0) then
            Result := cOsVista
          else if (majorVer = 6) and (minorVer = 1) then
            Result := cOsWin7
          else
            Result := cOsUnknown;
        end;

      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;

Bummi 16. Feb 2011 17:37

AW: OS Version wird nicht erkannt
 
Delphi-Quellcode:

  TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME, osXP,osVista,osWindows7);


function GetOS:TOSVersion;
var
  OS :TOSVersionInfo;
begin
  ZeroMemory(@OS,SizeOf(OS));
  OS.dwOSVersionInfoSize:=SizeOf(OS);
  GetVersionEx(OS);
  Result:=osUnknown;
  if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
    case OS.dwMajorVersion of
      3: Result:=osNT3;
      4: Result:=osNT4;
      5: Result:=os2K;
    end;
    if (OS.dwMajorVersion=6) then
      case OS.dwMinorVersion of
         0: Result:=osVista;
         1: Result:=osWindows7;
      end;


    if (OS.dwMajorVersion=5) and (OS.dwMinorVersion=1) then
      Result:=osXP;
  end else begin
    if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then begin
      Result:=os95;
      if (Trim(OS.szCSDVersion)='B') then
        Result:=os95OSR2;
    end else
      if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then begin
        Result:=os98;
        if (Trim(OS.szCSDVersion)='A') then
          Result:=os98SE;
      end else
        if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then
          Result:=osME;
  end;
end;

vergessen 16. Feb 2011 17:42

AW: OS Version wird nicht erkannt
 
Zitat:

Zitat von EWeiss (Beitrag 1082280)
Das gleiche in D2009 gibt mir immer XP als Rückgabe in der IDE.

Wird die EXE kompiliert gestartet erkennt er aber das richtig OS.
Sehr seltsam das ganze.

Startest Du D2009 im Kompatibilitätsmodus (als XP)?

EWeiss 16. Feb 2011 17:44

AW: OS Version wird nicht erkannt
 
Zitat:

Zitat von vergessen (Beitrag 1082286)
Zitat:

Zitat von EWeiss (Beitrag 1082280)
Das gleiche in D2009 gibt mir immer XP als Rückgabe in der IDE.

Wird die EXE kompiliert gestartet erkennt er aber das richtig OS.
Sehr seltsam das ganze.

Startest Du D2009 im Kompatibilitätsmodus (als XP)?

Nein..

gruss

EWeiss 16. Feb 2011 17:45

AW: OS Version wird nicht erkannt
 
Zitat:

Zitat von Bummi (Beitrag 1082284)
Delphi-Quellcode:

  TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME, osXP,osVista,osWindows7);


function GetOS:TOSVersion;
var
  OS :TOSVersionInfo;
begin
  ZeroMemory(@OS,SizeOf(OS));
  OS.dwOSVersionInfoSize:=SizeOf(OS);
  GetVersionEx(OS);
  Result:=osUnknown;
  if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
    case OS.dwMajorVersion of
      3: Result:=osNT3;
      4: Result:=osNT4;
      5: Result:=os2K;
    end;
    if (OS.dwMajorVersion=6) then
      case OS.dwMinorVersion of
         0: Result:=osVista;
         1: Result:=osWindows7;
      end;


    if (OS.dwMajorVersion=5) and (OS.dwMinorVersion=1) then
      Result:=osXP;
  end else begin
    if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then begin
      Result:=os95;
      if (Trim(OS.szCSDVersion)='B') then
        Result:=os95OSR2;
    end else
      if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then begin
        Result:=os98;
        if (Trim(OS.szCSDVersion)='A') then
          Result:=os98SE;
      end else
        if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then
          Result:=osME;
  end;
end;

Werd das mal testen. Danke
Obwohl wie ich schon sagte in D2006 und D200 als Kompilierte Exe funktioniert meine Version
Halt nur nicht in der IDE von 2009

EDIT
Zitat:

Startest Du D2009 im Kompatibilitätsmodus (als XP)?
Hab nochmal nachgeschaut .. Das war's Danke

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 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