9.Win32 API を使っての物理メモリ及び仮想メモリに関する情報を取得(27_Sys_09) (旧、SampleNo.229) |
1.Win32 API を使っての物理メモリ及び仮想メモリに関する情報を取得 2.WMI で取得した場合 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :System.Runtime.InteropServices / System.Management 参照設定:System.Management 参照設定方法参照 その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.Win32 API を使っての物理メモリ及び仮想メモリに関する情報を取得 |
Imports System.Runtime.InteropServices Imports System.Management Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim msx As New MEMORYSTATUSEX msx.dwLength = Marshal.SizeOf(msx) Dim mb As Integer = 1048576 GlobalMemoryStatusEx(msx) With ListBox1 .Font = New Font("MS ゴシック", 12, FontStyle.Regular) .Items.Clear() .Items.Add("メモリの使用率(%) " & Format(msx.dwLoad / 100, " ### %")) .Items.Add("物理メモリの搭載容量 " & Format(msx.dwTotalPhys / mb, "#,### MB")) .Items.Add("物理メモリの空き容量 " & Format(msx.dwAvailPhys / mb, "#,### MB")) .Items.Add("") .Items.Add("ページングの搭載容量 " & Format(msx.dwTotalPageFile / mb, " #,### MB")) .Items.Add("ページングの空き容量 " & Format(msx.dwAvailPageFile / mb, " #,### MB")) .Items.Add("仮想メモリの搭載容量 " & Format(msx.dwTotalVirtua / mb, " #,### MB")) .Items.Add("仮想メモリの空き容量 " & Format(msx.dwAvailVirtual / mb, " #,### MB")) End With End Sub 'メモリ使用状態に関する情報を取得する(1011) <DllImport("kernel32.dll", CharSet:=CharSet.Unicode, SetLastError:=True)> _ Private Shared Function GlobalMemoryStatusEx( _ ByRef theMemoryStatus As MEMORYSTATUSEX) As Boolean End Function 'メモリに関する情報を受け取る構造体(1012) <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _ Public Structure MEMORYSTATUSEX Public dwLength As Integer '構造体のサイズ Public dwLoad As Integer 'メモリの使用率(%) Public dwTotalPhys As Long '物理メモリの搭載容量 Public dwAvailPhys As Long '物理メモリの空き容量 Public dwTotalPageFile As Long 'ページングの搭載容量 Public dwAvailPageFile As Long 'ページングの空き容量 Public dwTotalVirtua As Long '仮想メモリの搭載容量 Public dwAvailVirtual As Long '仮想メモリの空き容量 Public dwAvailExtended As Long '仮想メモリの拡張空き容量(この値は常に0です) End Structure 上記実行結果(私の環境での取得結果) メモリの使用率(%) 44 % 物理メモリの搭載容量 8,104 MB 物理メモリの空き容量 4,517 MB ページングの搭載容量 9,384 MB ページングの空き容量 4,549 MB 仮想メモリの搭載容量 2,048 MB 仮想メモリの空き容量 1,766 MB おことわり WMI と Win32 API とでは、物理メモリ以外で呼び方?、集計方法が違うようです。(私の理解不足!) (理屈はともかく、ご自分の知りたいメモリ情報が解ればいいかなと...。) 詳しくは、MSDN の掲載サイトを調べて下さい。 |
2.WMI で取得した場合 |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim mc As New System.Management.ManagementClass("Win32_OperatingSystem") Dim collection As System.Management.ManagementObjectCollection = mc.GetInstances() ListBox2.Font = New Font("MS ゴシック", 12, FontStyle.Regular) ListBox2.Items.Clear() For Each mo As System.Management.ManagementObject In collection ListBox2.Items.Add("物理メモリの搭載容量 " & _ Format(Convert.ToInt32(mo("TotalVisibleMemorySize")) / 1024, "#,### MB")) ListBox2.Items.Add("物理メモリの空き容量 " & _ Format(Convert.ToInt32(mo("FreePhysicalMemory")) / 1024, "#,### MB")) Next End Sub 上記実行結果(私の環境での取得結果) 物理メモリの搭載容量 8,104 MB 物理メモリの空き容量 4,515 MB |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |