このエントリーをはてなブックマークに追加


WMIを使って物理メモリ・仮想メモリの使用量等を取得する

WMIを使ってWMI ClassのWin32_OperatingSystemからメモリの使用量等を取得し表示するコンソールアプリケーションになります。
尚、コンソールアプリケーションを動かすには参照にてSystem.Managementを参照追加する必要があります。

動作確認環境

  • Windows 10 ver.1909
  • Visual Studio 2019
  • .NET Framework 4.7.2
  • コンソールアプリケーション

関連記事

関連サイト

参照追加

System.Managementを参照に追加しないと以下のように赤の波線が表示されます。

11.png
 

System.Managementの参照追加手順

System.Managementを参照追加するにあたり、以下の手順で追加を行いました。

  1. 参照を右クリック
    01.png
     
  2. 参照マネージャーが表示されるので「アセンブリ」になっていることを確認し、
    検索ボックスにSystem.Managementを入力します。
  3. チェックを入れ「OK」ボタンをクリックします。
    02.png
     
  4. 以上の操作でSystem.Managementの参照追加は完了です。

サンプルコード

以下に C#, Visual Basic(VB) のサンプルコードと実行結果を記します。

C# サンプルコード

using System;

class Program
{
    static void Main(string[] args)
    {
        while (true)
        {
            using (System.Management.ManagementClass smmc = new System.Management.ManagementClass("Win32_OperatingSystem"))
            using (System.Management.ManagementObjectCollection smc = smmc.GetInstances())
            {
                foreach (System.Management.ManagementObject smmo in smc)
                    using (smmo)
                    {
                        UInt64 TotalVisibleMemorySize = (UInt64)smmo["TotalVisibleMemorySize"];
                        UInt64 FreePhysicalMemory = (UInt64)smmo["FreePhysicalMemory"];
                        UInt64 TotalVirtualMemorySize = (UInt64)smmo["TotalVirtualMemorySize"];
                        UInt64 FreeVirtualMemory = (UInt64)smmo["FreeVirtualMemory"];

                        Console.WriteLine("合計物理メモリ(TotalVisibleMemorySize) = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB",
                            TotalVisibleMemorySize,
                            TotalVisibleMemorySize / 1024f,
                            TotalVisibleMemorySize / 1024f / 1024f
                            );
                        Console.WriteLine("利用可能物理メモリ(FreePhysicalMemory) = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB",
                            FreePhysicalMemory,
                            FreePhysicalMemory / 1024f,
                            FreePhysicalMemory / 1024f / 1024f
                            );
                        Console.WriteLine("合計仮想メモリ(TotalVirtualMemorySize) = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB",
                            TotalVirtualMemorySize,
                            TotalVirtualMemorySize / 1024f,
                            TotalVirtualMemorySize / 1024f / 1024f
                            );
                        Console.WriteLine("利用可能仮想メモリ(FreeVirtualMemory)  = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB",
                            FreeVirtualMemory,
                            FreeVirtualMemory / 1024f,
                            FreeVirtualMemory / 1024f / 1024f
                            );
                    }
            }
            System.Threading.Thread.Sleep(1000);
            Console.Clear();
        }
    }
}

Visual Basic(VB) サンプルコード

Module Module1

    Sub Main()
        While True

            Using smmc As System.Management.ManagementClass = New System.Management.ManagementClass("Win32_OperatingSystem")

                Using smc As System.Management.ManagementObjectCollection = smmc.GetInstances()

                    For Each smmo As System.Management.ManagementObject In smc

                        Using smmo
                            Dim TotalVisibleMemorySize As UInt64 = CULng(smmo("TotalVisibleMemorySize"))
                            Dim FreePhysicalMemory As UInt64 = CULng(smmo("FreePhysicalMemory"))
                            Dim TotalVirtualMemorySize As UInt64 = CULng(smmo("TotalVirtualMemorySize"))
                            Dim FreeVirtualMemory As UInt64 = CULng(smmo("FreeVirtualMemory"))
                            Console.WriteLine("合計物理メモリ(TotalVisibleMemorySize) = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB", TotalVisibleMemorySize, TotalVisibleMemorySize / 1024.0F, TotalVisibleMemorySize / 1024.0F / 1024.0F)
                            Console.WriteLine("利用可能物理メモリ(FreePhysicalMemory) = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB", FreePhysicalMemory, FreePhysicalMemory / 1024.0F, FreePhysicalMemory / 1024.0F / 1024.0F)
                            Console.WriteLine("合計仮想メモリ(TotalVirtualMemorySize) = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB", TotalVirtualMemorySize, TotalVirtualMemorySize / 1024.0F, TotalVirtualMemorySize / 1024.0F / 1024.0F)
                            Console.WriteLine("利用可能仮想メモリ(FreeVirtualMemory)  = {0,6:d}KB {1,3:f2}MB {2,3:f2}GB", FreeVirtualMemory, FreeVirtualMemory / 1024.0F, FreeVirtualMemory / 1024.0F / 1024.0F)
                        End Using
                    Next
                End Using
            End Using

            System.Threading.Thread.Sleep(1000)
            Console.Clear()
        End While
    End Sub

End Module

実行結果

上記サンプルコードの実行結果(キャプチャ)になります。

12.png

以上、WMIを使ってメモリの使用量等を取得するサンプルコードでした。



添付ファイル: file12.png 7件 [詳細] file11.png 6件 [詳細] file02.png 5件 [詳細] file01.png 5件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-02-01 (土) 17:14:58