在 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 的狀態資訊,請依照下列步驟執行:
- 啟動 Microsoft Excel,然後建立新的活頁簿。
- 在 [工具] 功能表上指向 [巨集,並再按一下 [Visual Basic 編輯器] (或按下 ALT + F11)。
- 在 插入] 功能表上按一下 [模組]。
- 在模組工作表上輸入下列程式碼:
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
- 在 [工具] 功能表上指向 [巨集,然後按一下 [巨集]。
- 按一下 [屬性,然後按一下 [執行]。
巨集傳回訊息方塊,表示您系統的資訊。
如需有關如何使用本文中的範例程式碼的詳細資訊,按一下 [下面的文件編號,檢視 「 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 版本