WMIを使ってWMI ClassのWin32_OperatingSystemからメモリの使用量等を取得し表示するコンソールアプリケーションになります。
尚、コンソールアプリケーションを動かすには参照にてSystem.Managementを参照追加する必要があります。
System.Managementを参照に追加しないと以下のように赤の波線が表示されます。
System.Managementを参照追加するにあたり、以下の手順で追加を行いました。
以下に C#, Visual Basic(VB) のサンプルコードと実行結果を記します。
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();
}
}
}
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を使ってメモリの使用量等を取得するサンプルコードでした。