Code : Tout sélectionner
// Requires Windows Vista or Windows XP.
#include <windows>
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
GetModuleHandle("kernel32"),"IsWow64Process");
BOOL IsWow64()
{
BOOL bIsWow64 = FALSE;
if (NULL != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{
// handle error
}
}
return bIsWow64;
}
Code : Tout sélectionner
Procedure.l IsWow64() ; For PB4.0
Protected bIsWow64.l = #False
fnIsWow64Process = GetProcAddress_(GetModuleHandle_("kernel32"), "IsWow64Process")
If fnIsWow64Process ; Windows XP +
If Not CallFunctionFast(fnIsWow64Process, GetCurrentProcess_(), @bIsWow64)
; handle error
EndIf
EndIf
ProcedureReturn bIsWow64
EndProcedure
Code : Tout sélectionner
Prototype IsWow64Process(pid.l, *bResult)
Procedure.l IsWow64() ; For PB4.0
Protected bIsWow64.l = #False
fnIsWow64Process.IsWow64Process = GetProcAddress_(GetModuleHandle_("kernel32"), "IsWow64Process")
If fnIsWow64Process ; Windows XP+
If Not fnIsWow64Process(GetCurrentProcess_(), @bIsWow64)
; handle error
EndIf
EndIf
ProcedureReturn bIsWow64
EndProcedure
Code : Tout sélectionner
Import "kernel32.lib"
IsWow64Process(pid.l, *bResult)
EndImport
Procedure.l IsWow64()
IsWow64Process(GetCurrentProcess_(), @bIsWow64.l)
ProcedureReturn bIsWow64
EndProcedure
Renvoi #TRUE si l'OS est 64Bits, ou #FALSE s'il est 32bits.
Code : Tout sélectionner
If IsWow64()
Debug "OS 64 bit !"
Else
Debug "OS 32 bit !"
EndIf
