office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請(qǐng)用微信掃碼)

        

Access或Excel VBA或VB6判斷windows系統(tǒng)是32位還是64位

2017-07-23 08:34:00
zstmtony
原創(chuàng)
8150

最近幫客戶做一個(gè)Actviex DLL 同時(shí)用于windows 32位與windows 64位環(huán)境

在安裝和使用時(shí)總是出現(xiàn)一些問題,經(jīng)過不斷地折騰,終于找到問題所在。主要是判斷 32位與 64位的 系統(tǒng)目錄 system32 syswow64不太準(zhǔn)確。后實(shí)現(xiàn)以下的函數(shù)來精確判斷

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

'來判斷系統(tǒng)是32bit還是64bit,主要通過API來實(shí)現(xiàn),先在窗體模塊里申明以下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

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



'來源:Access交流網(wǎng)
'作者: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

'如果需要測(cè)試一下這個(gè)函數(shù)是否有效,可以在窗體上建立一個(gè)lblWindowBit標(biāo)簽控件,代碼如下:



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


'如果你的電腦windows系統(tǒng)是32位的,則返回的肯定就是“Flase”,如果是64位,則返回肯定就是“True”
'對(duì)比檢驗(yàn),可打開計(jì)算機(jī)的系統(tǒng)屬性,看看你的電腦安裝的winodws是否跟此程序運(yùn)行后得到的結(jié)果一致。



相關(guān)Access技巧:

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

分享
文章分類
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問