@ Ответ Вутера Саймона на правильном пути, но на самом деле неполный. В нем отсутствует пара Declare
утверждений, а также какое-то объяснение.
Поэтому я считаю, что здесь стоит представить более полную и рабочую версию.
Private Declare Function GetProcAddress Lib "kernel32" _
(ByVal hModule As Long, _
ByVal lpProcName As String) As Long
Private Declare Function GetModuleHandle Lib "kernel32" _
Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long '()
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function IsWow64Process Lib "kernel32" _
(ByVal hProcess As Long, ByRef Wow64Process As Long) As Long
Sub CheckWhetherIts64()
Dim Its64 As Long
Dim handle As Long
handle = GetProcAddress(GetModuleHandle("kernel32"), _
"IsWow64Process")
If handle > 0 Then ' IsWow64Process function exists
' Now use the function to determine if
' we are running under Wow64
IsWow64Process GetCurrentProcess(), Its64
End If
If Its64 = 1 Then
MsgBox "it's a 64 bit process."
End If
End Sub
Оговорка:
Для совместимости с операционными системами, которые не поддерживают эту функцию, вызовите GetProcAddress, чтобы определить, реализован ли IsWow64Process в Kernel32.dll. Если GetProcAddress завершается успешно, вызывать эту функцию безопасно. В противном случае WOW64 нет. Обратите внимание, что этот метод не является надежным способом определения того, является ли операционная система 64-разрядной версией Windows, поскольку Kernel32.dll в текущих версиях 32-разрядной Windows также содержит эту функцию.
http://msdn.microsoft.com/en-us/library/ms684139%28v=vs.85%29.aspx