Visual Basic Physical Memory

Ich versuche, die Menge des physischen Speichers (RAM Gesamt) installiert auf meinem PC mit Visual Basic.Das problem ist, dass ich als Rückgabe "0 bytes".Weiter werde ich auch versuchen, yo erhalten den Prozentsatz,die Menge des freien RAM,Insgesamt paging,freien Seite und einer Grafik, die die Nutzung wie Ressourcen-monitor für RAM in Windows.Das problem ist, dass ich nicht bekommen kann die richtige Menge des freien RAM-ersten zu vorher mit dem anderen.

Was ich falsch mache?
Danke.

Dies ist mein code:

Option Strict On
Option Explicit On
Imports System.Math
Imports System.Management
Imports System.Runtime.InteropServices
Public Class Form1
    Inherits System.Windows.Forms.Form
#Region " API "
    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
    Private Structure MEMORYSTATUSEX
        Dim dwLength As Integer
        Dim dwMemoryLoad As Integer
        Dim ullTotalPhys As ULong
    End Structure
    Private memoryInfo As MEMORYSTATUSEX
    Private Declare Auto Sub GlobalMemoryStatusEx Lib "kernel32" (ByRef lpBuffer As MEMORYSTATUSEX)
#End Region


#Region " Variables "

    Private mullTotalRAM As ULong

#End Region

#Region " Form Events "
    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        ' set title
        Me.Text = My.Application.Info.Title & " " & My.Application.Info.Version.Major.ToString & "." & _
            My.Application.Info.Version.Minor.ToString

        Application.DoEvents()
        GetMemoryInfo()
        Timer1.Enabled = True
    End Sub

#End Region

#Region " Information Gathering and Display "

    Private Sub GetMemoryInfo()

        System.Windows.Forms.Application.DoEvents()

        ' set size of structure (required by this api call)
        memoryInfo.dwLength = Marshal.SizeOf(memoryInfo)
        GlobalMemoryStatusEx(memoryInfo)

        mullTotalRAM = memoryInfo.ullTotalPhys

        txtRAM.Text = FormatBytes(mullTotalRAM)

    End Sub

#End Region

#Region " Update Timer "

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)

        GetMemoryInfo()

        Application.DoEvents()

    End Sub

#End Region


#Region " Formatting Routines "

    Private Function FormatBytes(ByVal ullBytes As ULong) As String
        Dim dblTemp As Double

        Try
            Select Case ullBytes
                Case Is >= 1073741824 'GB
                    dblTemp = CDbl(ullBytes / 1073741824)
                    Return FormatNumber(dblTemp, 2) & " GB"
                Case 1048576 To 1073741823
                    dblTemp = CDbl(ullBytes / 1048576) 'MB
                    Return FormatNumber(dblTemp, 0) & " MB"
                Case 1024 To 1048575
                    dblTemp = CDbl(ullBytes / 1024) 'KB
                    Return FormatNumber(dblTemp, 0) & " KB"
                Case 0 To 1023
                    dblTemp = ullBytes ' bytes
                    Return FormatNumber(dblTemp, 0) & " bytes"
                Case Else
                    Return ""
            End Select
        Catch
            Return ""
        End Try

    End Function


#End Region


    Private Sub ramaTotalRAM_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ramaTotalRAM.Enter

    End Sub

    Private Sub txtRAM_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtRAM.TextChanged

    End Sub
End Class

Habe ich dieses problem gelöst.Nun Frage ich mich, ob es möglich ist, etwas wie dieses:
http://s18.postimage.org/7zn5adst3/Memory.jpg .Wie kann ich es tun.ich danke Ihnen sehr.

Welches Betriebssystem verwendest du?
Das ist kein VB, aber vielleicht VB.Net.
Riemersma : ich verwende visual studio 2008 und dies ist ein .vb-Anwendung ("Form1 hinzu.vb" ist der name für Sie).
J. : ich bin mit Windows 7.
Marketing, verdammt, VB.Net ist nicht VB. Indem Sie klar in Ihre tagging-erhalten Sie Antworten schneller.

InformationsquelleAutor Teo Roxy | 2012-07-04

Schreibe einen Kommentar