Sie müssen GetProcAddress()
verwenden, um die Verfügbarkeit von % co_de zu überprüfen % Funktion zur Laufzeit, so:
, da diese Funktion nur für Windows-Versionen verfügbar ist, die eine 64-Bit-Version haben. Wenn Sie es als IsWow64Process()
deklarieren, wird Ihre Anwendung nicht auf Windows 2000 oder Windows XP vor SP2 ausgeführt.
Bearbeiten:
Chris hat einen Kommentar zum Zwischenspeichern des Ergebnisses aus Leistungsgründen gepostet. Dies ist für diese spezielle API-Funktion möglicherweise nicht notwendig, da kernel32.dll immer da sein wird (und ich kann mir ein Programm nicht vorstellen, das sogar ohne es geladen würde), aber für andere Funktionen können Dinge sein anders. Also hier ist eine Version, die das Funktionsergebnis zwischenspeichert:
%Vor% Das Zwischenspeichern dieses Funktionsergebnisses ist sicher, da die API-Funktion entweder vorhanden ist oder nicht, und das Ergebnis kann sich bei derselben Windows-Installation nicht ändern. Es ist sogar sicher, dies gleichzeitig von mehreren Threads aus aufzurufen, da zwei Threads, die external
als WasCalled
finden, beide die Funktion aufrufen, dasselbe Ergebnis an den gleichen Speicherort schreiben und erst danach False
auf% co_de setzen %.
Zusätzlich zu IsWow64Process
kann die API-Funktion GetNativeSystemInfo aktiviert werden von Interesse für Sie (es ist in der Einheit Windows
definiert), um mehr über die CPU zu erfahren, auf der Sie sich befinden (oder Sie können assembly und CPUID
verwenden).
Ich kann nicht Win32-Funktion in Delphi aufrufen.
Aber wenn Sie ein 32-Bit-Programm schreiben, können Sie die Win32-API IsWow64Process aufrufen, um zu wissen, ob Sie in einem 64-Bit-Betriebssystem arbeiten.
Natürlich, wenn Sie eine 64-Bit-Exe schreiben, wird sie nur auf 64-Bit-Windows ausgeführt, so dass Sie nicht fragen müssen.
Tags und Links delphi 32bit-64bit delphi-2007