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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige einfache single-Liner, um den job zu erledigen:
TotalPhysicalMemory
AvailablePhysicalMemory
TotalVirtualMemory
AvailableVirtualMemory
oder
Ändern Sie Ihr API-decl(beachten Sie, dass
.dll
fehlt im code)InformationsquelleAutor Cylian
Hier ist pastebin arbeiten Beispiel
War ich in der Lage, um es arbeiten durch die Nutzung dieser definition
GlobalMemoryStatusEx
und die untenMEMORYSTATUSEX
- und erklärt es wie
und auskommentieren
Ich weiß nicht, wo Sie bekam Ihre Struktur-definition für
MEMORYSTATUSEX
aber nach Pinvoke.net es ist angenommen zu werden.Können Sie auch einen Blick auf die Microsoft.VisualBasic.- Geräte.ComputerInfo Klasse
Ich habe gerade das Teil zeigt den Freien RAM-und immer noch "0 bytes" als Ergebnis.In die ähnliche Anwendung, die ich gefunden habe im web zeigt es mir die richtige Menge.Ist etwas über das Dialogfeld, das zeigt die Ausgabe.Es ist auf nur Lesen gesetzt:true Rückgabe:true,und Modifizierer:public.
Hinzugefügt einige zusätzliche Informationen. Ich war nicht in der Lage, Ihre code, um die Arbeit mit der Struktur, ich habe gepostet, dass ich und selbst dann musste ich die GlobalMemoryStatusEX-Erklärung. Also das obige funktioniert, ich bin nicht sicher, warum Ihr nicht arbeiten.
Ich danke Ihnen sehr.Ich habe bemerkt, dass, wenn ich lösche den Teil mit dem Fall 0 Bis 1023 meine Anwendung nicht zurückkehren wird alles, wenn ich es laufen lasse.Wenn ich es verlasse,bekomme ich "0 bytes".Ich glaube, dass etwas falsch ist,aber ich kann nicht herausfinden, was.Die Anwendung, die ich als Modell noch funktioniert wie ein Charme mit dem gleichen code.Nochmals vielen Dank.
Sie können immer einen Kommentar hinzufügen auf diese Frage, und ich werde es sehen. Aber wenn es eine neue Frage, am besten wäre es, stellen Sie eine neue ein, gibt es eine Menge sehr guter Programmierer. Denken Sie daran, dass, wenn jemand Ihre Frage beantwortet zu markieren, die als Antwort akzeptiert, wird die Frage schließen und geben Euch und Ihnen einige weitere rep.
InformationsquelleAutor Mark Hall
InformationsquelleAutor venkat