Access或Excel VBA或VB6判断windows系统是32位还是64位

2017-07-23 08:34:00
zstmtony
原创
764

最近帮客户做一个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的四种方法

分享