Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   OS Version ermitteln (https://www.delphipraxis.net/156372-os-version-ermitteln.html)

Bummi 30. Nov 2010 13:58

AW: OS Version ermitteln
 
"hathor" hat unter

http://www.delphi-forum.de/topic_Wie...m_99738,0.html etwas gepostet was funktioniert, letzter Post.

EDIT:

Damit könnte das Ende Deiner Prozedur IMHO so aussehen:
Delphi-Quellcode:
  Result := Result + ' Build: ' + IntToStr(osvi.dwBuildNumber);

  if IsWindows64 then Result := Result + ' 64-bit'  else Result := Result + ' 32-bit';

Luckie 30. Nov 2010 14:15

AW: OS Version ermitteln
 
Also das ist die Quelle http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx

Und das ist die Stelle:
Code:
if ( osvi.dwMajorVersion >= 6 )
      {
         if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )
            StringCchCat(pszOS, BUFSIZE, TEXT( ", 64-bit" ));
         else if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL )
            StringCchCat(pszOS, BUFSIZE, TEXT(", 32-bit"));
      }
aus dem original Code. Habe ich da was falsch übersetzt oder stimmt der original Code schon nicht?

Bummi 30. Nov 2010 14:19

AW: OS Version ermitteln
 
Hast Du Dir den Link auf Hathors Lösung angeschaut
Delphi-Quellcode:
function GetNativeSystemInfo(var SystemInfo: TSystemInfo): Boolean;
type
  TGetNativeSystemInfo = procedure (var SystemInfo: TSystemInfo) stdcall;
var
  LibraryHandle: HMODULE;
  _GetNativeSystemInfo: TGetNativeSystemInfo;
begin
  Result := False;
  LibraryHandle := GetModuleHandle(kernel32);

  if LibraryHandle <> 0 then
  begin
    _GetNativeSystemInfo := GetProcAddress(LibraryHandle,'GetNativeSystemInfo');
    if Assigned(_GetNativeSystemInfo) then
    begin
      _GetNativeSystemInfo(SystemInfo);
      Result := True;
    end
    else
      GetSystemInfo(SystemInfo);
  end
  else
    GetSystemInfo(SystemInfo);
end;

Luckie 30. Nov 2010 14:21

AW: OS Version ermitteln
 
In wie fern sollte das mein Problem lösen?

Bummi 30. Nov 2010 14:23

AW: OS Version ermitteln
 
vielleicht hab ich ja etwas missverstanden aber mit o.g. Funktion werden bei mir die 64-Bit richtig erkannt.

Luckie 30. Nov 2010 14:28

AW: OS Version ermitteln
 
Das müsste dieser Stelle im original Code entsprechen:
Code:
// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.

   pGNSI = (PGNSI) GetProcAddress(
      GetModuleHandle(TEXT("kernel32.dll")),
      "GetNativeSystemInfo");
   if(NULL != pGNSI)
      pGNSI(&si);
   else GetSystemInfo(&si);
Da war ich etwas unsicher, wie ich das übersetzen sollte und habe es weggelassen. Muss ich das wohl noch implementieren.

Luckie 30. Nov 2010 14:32

AW: OS Version ermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
OK, Habe die Funktion übernommen. Bitte noch mal testen. Sollte jetzt auch Unicode fähig sein.

Neutral General 30. Nov 2010 14:35

AW: OS Version ermitteln
 
Hallo,

Hast (leider) immernoch den (kleinen) Fehler drin:

Delphi-Quellcode:
case ProductType of
  //..
  PRODUCT_BUSINESS:
       Result := Result + ' rocessExefileBusiness Edition';
(Wobei der natürlich im Vergleich zu den anderen Problemen eher keine so hohe Priorität hat^^)

Bummi 30. Nov 2010 14:36

AW: OS Version ermitteln
 
Nur weil Du's bist, eine EXE mach ich sonnst nicht auf. :thumb: Passt.

Jens Hartmann 30. Nov 2010 14:37

AW: OS Version ermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt geht´s

Gruß Jens


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Seite 4 von 6   « Erste     234 56      

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