Private Sub Form_Load()
Dim msg As String ' Status information.
Dim nl As String ' New-line.
nl = Chr$(13) + Chr$(10) ' New-line.
Show
MousePointer = 11 ' Hourglass.
#If Win32 Then
' 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 "
Case 2
msg = msg + "Windows NT "
End Select
ver_major$ = verinfo.dwMajorVersion
ver_minor$ = verinfo.dwMinorVersion
build$ = verinfo.dwBuildNumber
msg = msg + ver_major$ + "." + ver_minor$
msg = msg + " (Build " + build$ + ")" + nl + nl
' 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" + nl
Case PROCESSOR_INTEL_486
msg = msg + "Intel 486" + nl
Case PROCESSOR_INTEL_PENTIUM
msg = msg + "Intel Pentium" + nl
Case PROCESSOR_MIPS_R4000
msg = msg + "MIPS R4000" + nl
Case PROCESSOR_ALPHA_21064
msg = msg + "DEC Alpha 21064" + nl
Case Else
msg = msg + "(unknown)" + nl
End Select
msg = msg + nl
' Get free memory.
Dim memsts As MEMORYSTATUS
Dim memory&
GlobalMemoryStatus memsts
memory& = memsts.dwTotalPhys
msg = msg + "Total Physical Memory: "
msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
memory& = memsts.dwAvailPhys
msg = msg + "Available Physical Memory: "
msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
memory& = memsts.dwTotalVirtual
msg = msg + "Total Virtual Memory: "
msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
memory& = memsts.dwAvailVirtual
msg = msg + "Available Virtual Memory: "
msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl _
+ nl
' Get free system resources.
' Not applicable to 32-bit operating system (Windows NT).
#Else
' Get operating system and version.
ver& = GetVersion()
status& = GetWinFlags()
If status& And WF_WINNT Then
msg = msg + "Microsoft Windows NT "
Else
msg = msg + "Microsoft Windows "
End If
ver_major$ = Format$(ver& And &HFF)
ver_minor$ = Format$((ver& And &HFF00) \ &H100, "00")
msg = msg + ver_major$ + "." + ver_minor$ + nl
' Get CPU type and operating mode.
msg = msg + "CPU: "
If status& And WF_CPU286 Then msg = msg + "80286"
If status& And WF_CPU386 Then msg = msg + "80386"
If status& And WF_CPU486 Then msg = msg + "80486"
If status& And WF_80x87 Then msg = msg + " with 80x87"
msg = msg + nl
msg = msg + "Mode: "
If status& And WF_STANDARD Then msg = msg + "Standard" + nl
If status& And WF_ENHANCED Then msg = msg + "Enhanced" + nl
' Get free memory.
memory& = GetFreeSpace(0)
msg = msg + "Memory free: "
msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
memory& = GlobalCompact(&HFFFFFFFF)
msg = msg + "Largest free block: "
msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
' Get free system resources.
' The SystemHeapInfo API function became available in Windows
' version 3.1.
msg = msg + "System resources: "
If ver& >= &H310 Then
Dim shi As SYSHEAPINFO
shi.dwSize = Len(shi)
If SystemHeapInfo(shi) Then
If shi.wUserFreePercent < shi.wGDIFreePercent Then
msg = msg + Format$(shi.wUserFreePercent) + "%"
Else
msg = msg + Format$(shi.wGDIFreePercent) + "%"
End If
End If
Else
msg = msg + "n/a"
End If
#End If
MsgBox msg, 0, "About " + Caption
MousePointer = 0
End Sub