Are you running on 64bit Windows?
<< Back
Recently I was asked how to determine whether a DF program is running on a 32 bit or 64 bit Windows.
There are lots of hacky ways to do it, like checking whether the
machine has a certain registry keys or certain directories (Ex. C:\Program Files (x86)). Here is the
official way recommended by Microsoft, implemented in DF.
Use Windows
External_Function IsWow64Process "IsWow64Process" Kernel32.dll Handle hProcess Pointer pb64 Returns Boolean
External_Function GetProcAddress "GetProcAddress" Kernel32.dll Handle hModule String sProc Returns Pointer
External_Function GetCurrentProcess "GetCurrentProcess" Kernel32.dll Returns DWord
Function Is64 Global Returns Boolean
#IFDEF IS$WIN64
Function_Return True // Since 64 bit programs can only run on 64 bit Windows
#ELSE
Handle hKernel
Pointer pProcAddress
String sModule
Boolean b64 bSuccess
Move "Kernel32.dll" to sModule
Move (GetModuleHandle(AddressOf(sModule))) to hKernel
Move (GetProcAddress(hKernel, "IsWow64Process")) to pProcAddress
If (pProcAddress) Begin
Move False to b64
Move (IsWow64Process(GetCurrentProcess(),AddressOf(b64))) to bSuccess
Function_Return b64
End
Function_Return False
#ENDIF
End_Function
Showln (Is64())
InKey FieldIndex