WMIを使って物理メモリ・仮想メモリの使用量等を取得する †WMIを使ってWMI ClassのWin32_OperatingSystemからメモリの使用量等を取得し表示するコンソールアプリケーションになります。 動作確認環境 †
関連記事 †関連サイト †参照追加 †System.Managementを参照に追加しないと以下のように赤の波線が表示されます。 System.Managementの参照追加手順 †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 実行結果 †上記サンプルコードの実行結果(キャプチャ)になります。 以上、WMIを使ってメモリの使用量等を取得するサンプルコードでした。 |