Access或Excel VBA或VB6判斷windows系統是32位還是64位

2017-07-23 08:34:00
zstmtony
原創
2181

最近幫客戶做一個Actviex DLL 同時用于windows 32位與windows 64位環境

在安裝和使用時總是出現一些問題,經過不斷地折騰,終于找到問題所在。主要是判斷 32位與 64位的 系統目錄 system32 syswow64不太準確。后實現以下的函數來精確判斷

'Access或Excel VBA或VB6判斷windows系統是32位還是64位 (32 bit or 64bit)

'來判斷系統是32bit還是64bit,主要通過API來實現,先在窗體模塊里申明以下API定義:

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 Boolean) As Long

'然后在窗體或模塊中再建立一個判斷系統是32位還是64位的函數,返回值是布爾值,如果系統是32位,此函數返回值是Flase 如果是64位,返回值是True,函數代碼如下:



'來源:Access交流網
'作者:tmtony  Public Function Is64bit() As Boolean
    Dim handle As Long, bolFunc As Boolean
    bolFunc = False
    handle = GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process")
    If handle > 0 Then
        IsWow64Process GetCurrentProcess(), bolFunc
    End If
    Is64bit = bolFunc
End Function

'如果需要測試一下這個函數是否有效,可以在窗體上建立一個lblWindowBit標簽控件,代碼如下:



Private Sub Form_Load()
    lblWindowBit.Caption = Is64bit
End Sub


'如果你的電腦windows系統是32位的,則返回的肯定就是“Flase”,如果是64位,則返回肯定就是“True”
'對比檢驗,可打開計算機的系統屬性,看看你的電腦安裝的winodws是否跟此程序運行后得到的結果一致。



相關Access技巧:

Access 或Excel VBA判斷當前Office版本是32位Office還是64位Office的四種方法

分享
北京十一选五基本走势