The information in this article applies to:
- Microsoft Excel for Windows, versions 5.0, 5.0c
   
 SUMMARY
 
The Visual Basic, Applications Edition, example below demonstrates how
to obtain system status information similar to the information
displayed in the Microsoft Windows Program Manager About box. The
example procedure displays the following information using the Windows
application programming interface (API) functions indicated:
 
This Statement/
 Property            Displays This Information
  
 GetWinFlags          The kind of CPU (80286, 80386, or 80486) and
                     whether a math coprocessor is present
GetWinFlags          Whether Microsoft Windows is running in
                     enhanced mode or standard mode
GetFreeSpace         The amount of free memory
and
GlobalCompact
 SystemHeapInfo       The percentage of free system resources
OperatingSystem      The version of Windows
 MORE INFORMATION
 
 To Create a sample macro
 
- Start Microsoft Excel for Windows 5.0.
 - On the Insert menu, click Macro, and then click Module. Module 1
   is created by default.
 - Type the following code into the newly created module:
    ' Constants for GetWinFlags.
   Global Const WF_CPU286 = &h2
   Global Const WF_CPU386 = &h4
   Global Const WF_CPU486 = &h8
   Global Const WF_80x87 = &h400
   Global Const WF_STANDARD = &h10
   Global Const WF_ENHANCED = &h20
   ' Type for SystemHeapInfo.
   Type SYSHEAPINFO
       dwSize As Long
       wUserFreePercent As Integer
       wGDIFreePercent As Integer
       hUserSegment As Integer
       hGDISegment As Integer
   End Type
   Declare Function GetWinFlags Lib "KERNEL" () As Long
   Declare Function GetFreeSpace Lib "KERNEL" _
     (ByVal wFlags As Integer) As Long
   Declare Function GlobalCompact Lib "KERNEL" _
     (ByVal dwMinFree As Long) As Long
   Declare Function SystemHeapInfo Lib "TOOLHELP.DLL" _
     (shi As SYSHEAPINFO) As Integer
   Sub GetWindowsInfo()
       Dim Status As Long
       Dim Memory As Long
       Dim msg As String         ' Status information.
       Dim nl As String          ' New-line.
       Dim shi As SYSHEAPINFO
       nl = Chr$(13) + Chr$(10)  ' New-line.
       Status = GetWinFlags()
       ' Get operating system version.
       ' (Uses Excel's built-in OperatingSystem function rather
       ' than Windows API calls.)
       msg = "OS: " + Application.OperatingSystem
       ' Get CPU kind and operating mode.
       msg = msg + nl + "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(&hffff)
       msg = msg + "Largest free block: "
       msg = msg + Format$(Memory \ 1024, "###,###,###") + "K" + nl
       ' Get free system resources.
       msg = msg + "System resources: "
       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
       MsgBox msg, vbOKOnly, "About This PC"
   End Sub
 - On the Tools menu, click Macro.
 - In the Macro Name/Reference list, click GetWindowsInfo, and
   click OK to run the macro.
   Microsoft provides examples of Visual Basic for Applications procedures for
illustration only, without warranty either expressed or implied, including,
but not limited to the implied warranties of merchantability and/or fitness
for a particular purpose. The Visual Basic procedures in this article are
provided 'as is' and Microsoft does not guarantee that they can be used in
all situations. While Microsoft support engineers can help explain the
functionality of a particular macro, they will not modify these examples to
provide added functionality, nor will they help you construct macros to
meet your specific needs. If you have limited programming experience, you
may want to consult one of the Microsoft Solution Providers. Solution
Providers offer a wide range of fee-based services, including creating
custom macros. For more information about Microsoft Solution Providers,
call Microsoft Customer Information Service at (800) 426-9400.
Note that a line that is preceded by an apostrophe introduces a
comment in the code--comments are provided to explain what the code is
doing at a particular point in the procedure. Note also that an
underscore character (_) indicates that code continues from one line
to the next. You can type lines that contain this character as one
logical line or you can divide the lines of code and include the line
continuation character. For more information about Visual Basic for
Applications programming style, see the "Programming Style in This
Manual" section in the "Document Conventions" section of the "Visual
Basic User's Guide."
 
	 
	 |