64Bit版のx86エミュレータで動作しているかの判断 <TOP>
IsWow64Process 指定されたプロセスの実行に、WOW64 が使用されているかどうかを決定
GetModuleHandle 指定の実行モジュールのハンドルを取得
GetProcAddress 実行モジュール内の関数アドレスを取得
GetCurrentProcess 現在のプロセスに対応する疑似ハンドルを取得
Windows 7 Professional SP1(32Bit版)の例 Windows 7 Home Premium SP1(64Bit版)の例
'================================================================ '= 64Bit版のx86エミュレータで動作しているかの判別(U) '= (IsWow64Process2.bas) '================================================================ #include "Windows.bi" ' 指定されたプロセスの実行に、WOW64 が使用されているかどうかを決定 Declare Function Api_IsWow64Process& Lib "kernel32" Alias "IsWow64Process" (ByVal hProcess&, ByRef Wow64Process&) ' 指定の実行モジュールのハンドルを取得 Declare Function Api_GetModuleHandle& Lib "Kernel32" Alias "GetModuleHandleA" (ByVal ModuleName$) ' 実行モジュール内の関数アドレスを取得 Declare Function Api_GetProcAddress& Lib "Kernel32" Alias "GetProcAddress" (ByVal ModuleHandle&, ByVal ProcName$) ' 現在のプロセスに対応する疑似ハンドルを取得 Declare Function Api_GetCurrentProcess& Lib "Kernel32" Alias "GetCurrentProcess" () Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Function IsWow64() As Integer Function IsWow64() As Integer Var Wow64 As Long Var Wow64Proc As Long Wow64 = False Wow64Proc = Api_GetProcAddress(Api_GetModuleHandle("kernel32"), "Wow64Process") If (0 <> Wow64Proc) Then If 0 = Api_Wow64Process(Api_GetCurrentProcess(), Wow64) Then ' handle error End If End If IsWow64 = (Wow64 <> 0) End Function '================================================================ '= '================================================================ Declare Sub Button1_on edecl() Sub Button1_on() If IsWow64() = True then A% = MessageBox("", "Windows x64 で動作しています!", 0, 2) Else A% = MessageBox("", "Windows x64 で動作していません!", 0, 2) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End