Rubrik: System/Windows · Sonstiges | VB-Versionen: VB5, VB6 | 17.12.07 |
RAM-Speicher via WMI ermitteln Mit dieser Prozedur lässt sich der verfügbare und freie RAM-Speicher auch bei mehr als 2GB ermitteln. | ||
Autor: Dieter Otter | Bewertung: | Views: 22.228 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
In unserem Tipps & Tricks Bereich gibt es zwar schon einen Tipp, um die Größe des verfügbaren und freien Arbeitsspeichers zu ermitteln, jedoch funktioniert dieser nur bei einem Arbeitsspeicher bis 2 GB. Nachfolgender Code ermittelt die Größe des verfügbaren und freien RAM-Speichers mittels WMI und gibt auch für mehr als 2 GB RAM die korrekten Werte zurück.
' Verfügbaren und freien Arbeitsspeicher via WMI ermitteln Public Sub GetRAMInfo(ByRef sTotal As String, ByRef sFree As String) On Error GoTo ErrHandler Dim oWMI As Object Dim oResult As Object Dim oItem As Object Dim sSQL As String ' Verweis auf WMI erstellen Set oWMI = GetObject("winmgmts:") ' WMI-Abfrage für den verfügbaren RAM sSQL = "Select TotalPhysicalMemory from Win32_ComputerSystem" Set oResult = oWMI.ExecQuery(sSQL) For Each oItem In oResult sTotal = FormatRam(oItem.TotalPhysicalMemory) Exit For Next ' WMI-Abfrage für den freien Arbeitsspeicher sSQL = "SELECT FreePhysicalMemory from Win32_OperatingSystem" Set oResult = oWMI.ExecQuery(sSQL) For Each oItem In oResult sFree = FormatRam(oItem.FreePhysicalMemory * 1024) Exit For Next On Error GoTo 0 Exit Sub ErrHandler: End Sub
' Hilfsfunktion zur Formatierung der ermittelten Bytes ' in KB, MB bzw. GB Private Function FormatRam(ByVal oRam As Variant) As String ' RAM-Angabe formatieren If (((oRam / 1024) / 1024) / 1024) >= 1 Then ' GB FormatRam = Format(((oRam / 1024) / 1024) / 1024, "###,##0.0#") & " GB" ElseIf ((oRam / 1024) / 1024) >= 1 Then ' MB FormatRam = Format((oRam / 1024) / 1024, "###,##0.0#") & " MB" Else ' KB FormatRam = Format(oRam / 1024, "###,##0.0#") & " KB" End If End Function
Aufrufbeispiel:
Dim sTotal As String Dim sFree As String ' RAM-Info GetRAMInfo sTotal, sFree ' Anzeige in Label-Controls Label1.Caption = "Verfügbarer RAM: " & sTotal Label2.Caption = "Freier RAM: " & sFree