Delphi 如何检测32/64平台?
我需要检测应用程序是否在Win32/64上运行Delphi 如何检测32/64平台?,delphi,32bit-64bit,delphi-xe7,Delphi,32bit 64bit,Delphi Xe7,我需要检测应用程序是否在Win32/64上运行 更新:正在报告依赖[HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0]键不是一个好主意 您在问题中提供的代码有一些瑕疵,但它确实正常工作。我怀疑您实际上并没有运行该代码,并且犯了一个错误,并以某种方式发布了错误的代码 FWIW,您应该使用fromSystem.SysUtils检查底层平台的比特率。属性将告诉您底层平台是32位还是64位。这段代码非常粗糙LoadLibrary返回一个HMODULE
更新:正在报告依赖[HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0]键不是一个好主意 您在问题中提供的代码有一些瑕疵,但它确实正常工作。我怀疑您实际上并没有运行该代码,并且犯了一个错误,并以某种方式发布了错误的代码
FWIW,您应该使用from
System.SysUtils
检查底层平台的比特率。属性将告诉您底层平台是32位还是64位。这段代码非常粗糙LoadLibrary
返回一个HMODULE
GetModuleHandle('kernel32')
比LoadLibrary
更好。狡猾地使用@
。无意义地初始化vIsWow64
。似乎很难相信IsWow64Process
会在32位操作系统上返回True
。@TLama问题中的代码调用IsWow64Process
。它不仅仅检测函数是否被导出,我无法复制。在我的32位xp系统上,您的函数及其折痕返回false。注意,我添加了诊断来证明它到达了对IsWow64Process
的调用,并且该调用成功(返回true)。我发现很难相信IsWow64Process
不起作用。主要是我希望您在继续编写代码之前注意TOSVersion.Architecture
。您可以删除问题中的代码,只需使用TOSVersion.Architecture
@user246408 Serg,您为此关闭的DUP询问D2007,而这将排除TOSVersion
答案。这里的问题是XE7。考虑到GetVersionEx
的谎言,即使现在这也很难做到!不过,TOSVersion
确实给了您版本号和名称,所以我想这是一个很好的方法,将GetVersionEx
模块化。