- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-02-01T17:14:58+09:00","","")
#author("2020-05-10T09:57:51+09:00;2020-02-01T17:14:58+09:00","","")
#navi(../)
* WMIを使って物理メモリ・仮想メモリの使用量等を取得する [#ca6b646f]
WMIを使ってWMI ClassのWin32_OperatingSystemからメモリの使用量等を取得し表示するコンソールアプリケーションになります。~
尚、コンソールアプリケーションを動かすには参照にて''System.Management''を参照追加する必要があります。~
#htmlinsert(windev-top.html)
#contents
* 動作確認環境 [#o8a46bf7]
- Windows 10 ver.1909
- Visual Studio 2019
- .NET Framework 4.7.2
- コンソールアプリケーション
#htmlinsert(windev-top.html)
* 関連記事 [#l053efca]
-[[CPU使用率を取得するサンプルコード>.NET/CPU使用率を取得する]]
-[[CPUコア毎の使用率を取得するサンプルコード>.NET/CPUコア毎の使用率を取得する]]
* 関連サイト [#kdaa7289]
-[[Microsoft .NET ManagementClass クラス>https://docs.microsoft.com/ja-jp/dotnet/api/system.management.managementclass]]
* 参照追加 [#u59cbf8d]
''System.Management''を参照に追加しないと以下のように&color(red){赤の波線};が表示されます。
#ref(11.png)
#br
** ''System.Management''の参照追加手順 [#xaab5e4a]
''System.Management''を参照追加するにあたり、以下の手順で追加を行いました。
+ 参照を右クリック
#ref(01.png)
#br
+ 参照マネージャーが表示されるので「アセンブリ」になっていることを確認し、~
検索ボックスに''System.Management''を入力します。
+ チェックを入れ「OK」ボタンをクリックします。
#ref(02.png)
#br
+以上の操作で''System.Management''の参照追加は完了です。
* サンプルコード [#z925f522]
以下に C#, Visual Basic(VB) のサンプルコードと実行結果を記します。
** C# サンプルコード [#u3c86072]
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) サンプルコード [#nca661cb]
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
** 実行結果 [#v856fd7b]
上記サンプルコードの実行結果(キャプチャ)になります。~
#ref(12.png)
以上、WMIを使ってメモリの使用量等を取得するサンプルコードでした。
#htmlinsert(windev-btm.html)