メモリー状況を取得しよう!!



現在の使用中のメモリ量や、全メモリ量を取得する。

        [標準モジュール]
        '===========================================================================
        '    ファイル名    : basMemory.bas
        '    ファイル説明  : メモリ情報 関数群
        '    作成者        : Uz
        '    作成日        : 1998/01/20 (Tue)
        '    修正日        : 1998/01/20 (Tue)
        '    備考          :
        '===========================================================================
        Option Explicit

        '-- API定数群
        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

        '-- API関数群
        Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

        '///////////////////////////////////////////////////////////////////////////
        '      関数名    : GetMemoryTotal
        '      目的説明  : 全メモリ量のバイト数を返す
        '      前提条件  : なし
        '      結果      : なし
        '      引数      : なし
        '      戻り値    : long     : 全メモリ量(Byte)
        '      備考      ; なし
        '///////////////////////////////////////////////////////////////////////////
        Public Function GetMemoryTotal() As Long
            Dim msMemoryStatus As MEMORYSTATUS
            
            msMemoryStatus.dwLength = LenB(msMemoryStatus)
            Call GlobalMemoryStatus(msMemoryStatus)
            GetMemoryTotal = msMemoryStatus.dwTotalPhys
        End Function

        '///////////////////////////////////////////////////////////////////////////
        '      関数名    : GetMemoryFree
        '      目的説明  : 使用中のメモリ量のバイト数を返す
        '      前提条件  : なし
        '      結果      : なし
        '      引数      : なし
        '      戻り値    : Long     :使用メモリ量(Byte)
        '      備考      ; なし
        '///////////////////////////////////////////////////////////////////////////
        Public Function GetMemoryFree() As Long
            Dim msMemoryStatus As MEMORYSTATUS
            
            msMemoryStatus.dwLength = LenB(msMemoryStatus)
            Call GlobalMemoryStatus(msMemoryStatus)
            GetMemoryFree = msMemoryStatus.dwAvailPhys
        End Function

        [フォーム側]
        Private Sub timTimer_Timer()
            lblTotal.Caption = "Total : " & GetMemoryTotal / 1024 & "KB"
            lblFree.Caption = "Free  : " & GetMemoryFree / 1024 & "KB"
        End Sub