1. 程式人生 > >VB6裡判斷是否64位系統

VB6裡判斷是否64位系統

留個技術文章,寫一下VB6裡判斷系統是否64位的程式碼。
先來建立您的 Module1.bas,程式碼如下:

'判斷 64 位系統的 API:獲取程序地址,獲取模組控制代碼,獲取當前程序,是否 64 位程序
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 hProc As Long, bWow64Process As Long) As Long Public IsWow64 As Boolean '主模組中的公用變數,其他模組直接引用即可,不必再執行函式判斷。 Sub Main() IsWow64 = IsWow64Func '執行其他程式碼
'FrmMain.Show End Sub Private Function IsWow64Func() As Boolean '簡單判斷系統是 64 還是 32 位 'kernel32.dll 程序地址是否含有 IsWow64Process 控制代碼 IsWow64Func = CBool(GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process")) End Function 'Private Function IsWow64Func() As Long '如果 IsWow64Process 存在(返回非零),系統即是 64 位。否則不需要判斷,就是 32 位
' If GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process") = 0 Then 'kernel32.dll 程序地址不含有 IsWow64Process 控制代碼,也就是系統不是 64 位。此時本函式返回 [0] ' IsWow64Func = 0 ' Else ' IsWow64Process GetCurrentProcess(), IsWow64B 'kernel32.dll 程序地址不含有 IsWow64Process 控制代碼,為 64 位系統。用第二個傳入引數 [IsWow64B] 看當前程序是否 64 位。 ' If IsWow64Pro = 0 Then ' IsWow64Func = -1 '被賦值為 0 ,是 64 位程式(當前程序)跑在 64 位系統(WOW64模式)下。此時本函式返回 [-1] ' Else ' IsWow64Func = 1 '被賦值為 1 ,是 32 位程式(當前程序)跑在 64 位系統(WOW64模式)下。此時本函式返回 [1] ' End If ' End If ' '也可以簡寫為 IsWow64Func = IIf(IsWow64Pro, 1, -1) 'End Function