64Bit版のx86エミュレータで動作しているかの判別(T) <TOP>
IsWow64Process 指定されたプロセスの実行に、WOW64 が使用されているかどうかを決定
GetCurrentProcess 現在のプロセスに対応する疑似ハンドルを取得
GetNativeSystemInfo WOW64 で実行中のアプリケーションシステムに関する情報を取得
'================================================================ '= 64Bit版のx86エミュレータで動作しているかの判別(T) '= (IsWow64Process.bas) '================================================================ #include "Windows.bi" Type SYSTEM_INFO dwOemId As Long 'このメンバは使われない dwPageSize As Long 'メモリページのサイズ lpMinimumApplicationAddress As Long 'アプリケーションが利用可能なメモリ空間の最下位アドレス lpMaximumApplicationAddress As Long 'アプリケーションが利用可能なメモリ空間の最上位アドレス dwActiveProcessorMask As Long 'システム中に存在するプロセッサのビットマスク dwNumberOfProcessors As Long 'システム中に存在するプロセッサの数 dwProcessorType As Long 'プロセッサの種類(386・486・586) dwAllocationGranularity As Long 'メモリ空間割り当ての最小単位 wProcessorLevel As Integer 'プロセッサの種類(WindowsNT系OSのみ) wProcessorRevision As Integer 'プロセッサのバージョン(WindowsNT系OSのみ) End Type ' 指定されたプロセスの実行に、WOW64 が使用されているかどうかを決定 Declare Function Api_IsWow64Process& Lib "kernel32" Alias "IsWow64Process" (ByVal hProcess&, ByRef Wow64Process&) ' 現在のプロセスに対応する疑似ハンドルを取得 Declare Function Api_GetCurrentProcess& Lib "Kernel32" Alias "GetCurrentProcess" () 'WOW64 で実行中のアプリケーションシステムに関する情報を取得 Declare Sub Api_GetNativeSystemInfo Lib "kernel32" Alias "GetNativeSystemInfo" (lpSystemInfo As SYSTEM_INFO) Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl() Sub Button1_on() Var Value As Long Var Ret As Long Ret = Api_IsWow64Process(GetCurrentProcess, Value) If Value = 0 Then A% = MessageBox("", "このアプリケーションは、" & Chr$(13, 10) & "64Bitコンピューターの" & Chr$(13, 10) & "x86エミュレーションで" & Chr$(13, 10) & "動作していません!", 0, 2) Else Var si64 As SYSTEM_INFO Api_GetNativeSystemInfo si64 A% = MessageBox("", "64ビットシステム上の" & Chr$(13, 10) & "プロセッサの数: " & Chr$(13, 10) & Str$(si64.dwNumberOfProcessors), 0, 2) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End