文章編號: 213267 - 上次校閱: 2007年8月22日 - 版次: 3.4

如何: 從 Excel 2000 中的 Windows API 取得 Windows 的狀態資訊

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

在 Microsoft Excel 中您可以以程式設計方式取得系統狀態資訊,並於工作表中顯示。本文將逐步提供範例 Microsoft Visual Basic 應用程式 Sub 程序程式藉由使用 Windows API 函式會顯示下列資訊:
  • 以 GetVersionEx API 函數 Windows 版本號碼。
  • GetSystemInfo API 函式的 [CPU] 處理器類型。
  • GlobalMemoryStatus API 函式的可用記憶體數量。

若要取得 Windows 狀態資訊的範例程式碼

Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證,包括但不是限於適售性以及適合某特定用途之默示擔保責任。本文假設您已熟悉我們所示範的程式設計語言,以及用來建立和偵錯程序的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您的特定需求。
如果您有限制程式設計經驗,您可以連絡 Microsoft 認證合作夥伴或 Microsoft 諮詢服務。如需詳細資訊請造訪下列 Microsoft] 網站:

Microsoft 認證合作夥伴-https://partner.microsoft.com/global/30000104 (https://partner.microsoft.com/global/30000104)

Microsoft 摘要報告服務-http://support.microsoft.com/gp/advisoryservice (http://support.microsoft.com/gp/advisoryservice)

如需有關可用的支援選項,以及有關如何連絡 Microsoft 的詳細資訊,請造訪下列 Microsoft 網站: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;en-us;cntactms) 如果要使用 Windows API 呼叫來取得 Windows 的狀態資訊,請依照下列步驟執行:
  1. 啟動 Microsoft Excel,然後建立新的活頁簿。
  2. 在 [工具] 功能表上指向 [巨集,並再按一下 [Visual Basic 編輯器] (或按下 ALT + F11)。
  3. 插入] 功能表上按一下 [模組]。
  4. 在模組工作表上輸入下列程式碼:
    Option Explicit
    
    Type SYSTEM_INFO
        dwOemID As Long
        dwPageSize As Long
        lpMinimumApplicationAddress As Long
        lpMaximumApplicationAddress As Long
        dwActiveProcessorMask As Long
        dwNumberOrfProcessors As Long
        dwProcessorType As Long
        dwAllocationGranularity As Long
        dwReserved As Long
    End Type
    
    Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128
    End Type
    
    Type MEMORYSTATUS
        dwLength As Long
        dwMemoryLoad As Long
        dwTotalPhys As Long
        dwAvailPhys As Long
        dwTotalPageFile As Long
        dwAvailPageFile As Long
        dwTotalVirtual As Long
        dwAvailVirtual As Long
    End Type
    
    'The following three Declare lines must be each entered on a single
    'line.
    
    Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
                 (LpVersionInformation As OSVERSIONINFO) As Long
    Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As _
                MEMORYSTATUS)
    Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As _
                  SYSTEM_INFO)
    
    Public Const PROCESSOR_INTEL_386 = 386
    Public Const PROCESSOR_INTEL_486 = 486
    Public Const PROCESSOR_INTEL_PENTIUM = 586
    Public Const PROCESSOR_MIPS_R4000 = 4000
    Public Const PROCESSOR_ALPHA_21064 = 21064
    
    Sub SystemInformation()
    Dim msg As String         ' Status information.
    Dim NewLine As String     ' New-line.
    Dim ret As Integer        ' OS Information
    Dim ver_major As Integer  ' OS Version
    Dim ver_minor As Integer  ' Minor Os Version
    Dim Build As Long         ' OS Build
    
          NewLine = Chr(13) + Chr(10)  ' New-line.
          ' Get operating system and version.
          Dim verinfo As OSVERSIONINFO
          verinfo.dwOSVersionInfoSize = Len(verinfo)
          ret = GetVersionEx(verinfo)
          If ret = 0 Then
              MsgBox "Error Getting Version Information"
              End
          End If
    
          Select Case verinfo.dwPlatformId
              Case 0
                  msg = msg + "Windows 32s "
              Case 1
                  msg = msg + "Windows 95/98 "
              Case 2
                  msg = msg + "Windows NT/2000 "
          End Select
    
          ver_major = verinfo.dwMajorVersion
          ver_minor = verinfo.dwMinorVersion
          Build = verinfo.dwBuildNumber
          msg = msg & ver_major & "." & ver_minor
          msg = msg & " (Build " & Build & ")" & NewLine & NewLine
    
          ' Get CPU type and operating mode.
          Dim sysinfo As SYSTEM_INFO
          GetSystemInfo sysinfo
          msg = msg + "CPU: "
          Select Case sysinfo.dwProcessorType
              Case PROCESSOR_INTEL_386
                  msg = msg + "Intel 386" + NewLine
              Case PROCESSOR_INTEL_486
                  msg = msg + "Intel 486" + NewLine
              Case PROCESSOR_INTEL_PENTIUM
                  msg = msg + "Intel Pentium" + NewLine
              Case PROCESSOR_MIPS_R4000
                  msg = msg + "MIPS R4000" + NewLine
              Case PROCESSOR_ALPHA_21064
                  msg = msg + "DEC Alpha 21064" + NewLine
              Case Else
                  msg = msg + "(unknown)" + NewLine
          End Select
    
          msg = msg + NewLine
    
          ' Get free memory.
          Dim memsts As MEMORYSTATUS
          Dim memory As Long
          GlobalMemoryStatus memsts
          memory = memsts.dwTotalPhys
          msg = msg + "Total Physical Memory: "
          msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLine
          memory = memsts.dwAvailPhys
          msg = msg + "Available Physical Memory: "
          msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLine
          memory = memsts.dwTotalVirtual
          msg = msg + "Total Virtual Memory: "
          msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLine
          memory = memsts.dwAvailVirtual
          msg = msg + "Available Virtual Memory: "
          msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLine
    
          MsgBox msg, vbOKOnly, "System Info"
    End Sub
    					
  5. 在 [工具] 功能表上指向 [巨集,然後按一下 [巨集]。
  6. 按一下 [屬性,然後按一下 [執行]。
巨集傳回訊息方塊,表示您系統的資訊。

?考

如需有關如何使用本文中的範例程式碼的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
212536? (http://support.microsoft.com/kb/212536/EN-US/ ) OFF2000: 如何執行範例程式碼從眭舑恅梒
如需有關如何使用 Windows API Microsoft Visual Basic 的額外資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中發行項]:
161151? (http://support.microsoft.com/kb/161151/EN-US/ ) HOWTO: 取得透過 API 呼叫的 Windows 狀態資訊
189249? (http://support.microsoft.com/kb/189249/EN-US/ ) HOWTO: 判斷正在使用哪一個 32 位元 Windows 版本


這篇文章中的資訊適用於:
  • Microsoft Excel 2000 Standard Edition
關鍵字:?
kbmt kbdtacode kbhowtomaster kbprogramming KB213267 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:213267? (http://support.microsoft.com/kb/213267/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。