Prozessbeschreibung und verbrauchten Arbeitsspeicher der Anwendung herausfinden

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Prozessbeschreibung und verbrauchten Arbeitsspeicher der Anwendung herausfinden

    hallo liebe com, ich bins wieder:D
    weiß jemand wie ich Den Verbrauch einer Anwendung und Beschreibung auslesen kann?

    VB.NET-Quellcode

    1. Dim val1 As String = ""
    2. Dim ProcessList As Process() = Process.GetProcesses()
    3. For Each Proc As Process In ProcessList
    4. val1 += Proc.ProcessName & vbNewLine
    5. Next
    6. TextBox1.Text = val1

    in dem code werden alle prozesse ganz simpel in einer textbox wiedergegeben, nun will ich die weiteren informationen anhängen, aber wie lese ich diese infos aus?

    MfG
    und einen schönen Freitag euch:)
    Hey,

    na Du hast die Lösung ja schon fast.

    VB.NET-Quellcode

    1. Dim p() As Process = Process.GetProcesses()
    2. Dim s As String = ""
    3. For Each pro As Process In p
    4. s &= pro.ProcessName & " " & pro.WorkingSet64.ToString("N2")
    5. Next


    unter der Property MainModule der Process-Instanz findest Du die Beschreibungen, die Du suchst.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    Hey,

    na Du hast die Lösung ja schon fast.

    VB.NET-Quellcode

    1. Dim p() As Process = Process.GetProcesses()
    2. Dim s As String = ""
    3. For Each pro As Process In p
    4. s &= pro.ProcessName & " " & pro.WorkingSet64.ToString("N2")
    5. Next


    unter der Property MainModule der Process-Instanz findest Du die Beschreibungen, die Du suchst.

    danke!

    nochzwei fragen: ist der belegte arbeitsspeicher in bytes angegeben? wie lässt er sich in mb/kilobyte umrechnen und das mit dem mainmodule verstehe ich nicht(wie ich es anwenden muss)

    ich habe das versucht:

    VB.NET-Quellcode

    1. Dim p() As Process = Process.GetProcesses()
    2. Dim s As String = ""
    3. ' Dim VerfügbarerArbeitsspeicher As Double = Math.Round(My.Computer.Info.TotalPhysicalMemory / 1024 / 1024 / 1024, 1)
    4. For Each pro As Process In p
    5. s &= pro.ProcessName & " " & Math.Round(pro.WorkingSet64.ToString("N2") / "0.0009765625", 1) & vbNewLine
    6. Next
    7. TextBox1.Text = s

    MFG
    Huhu,

    ja, WorkingSet64 gibt Dir nen Long zurück, der die belegten Bytes repräsentiert.

    1024 Byte sind ein KiloByte
    1024 KiloByte sind ein MegaByte
    1024 MegaByte sind ein GigaByte

    usw.

    Noch ein Beispiel, wie Du an die Beschreibung kommst. Aber hier aufpassen! Wenn Du ein 64Bit System hast und die Anwendung für X86 erstellt wird und der Prozess, von dem Du die Info willst, ein x64 ist, dann bekommst Du eine Ausnahme. X86 Prozesse haben keinen Zugriff auf X64 Prozess-Infos. Hab ich auch gerade erst gesehen. Darum ist in dem Code ein Try-Catch-Block. Kurz gesagt, wenn Du 64Bit hast und die Infos aller Prozesse willst, muss Deine Anwendung eine X64 Anwendung sein.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim p() As Process = Process.GetProcesses()
    4. Dim s As String = ""
    5. For Each proc As Process In p
    6. Dim usedMem As Double = GetMegaBytes(proc.WorkingSet64)
    7. Dim description As String = ""
    8. Dim infos As String = ""
    9. Try
    10. description = proc.MainModule.FileVersionInfo.FileDescription
    11. Catch ex As Exception
    12. description = "not available"
    13. End Try
    14. infos = usedMem.ToString("N2") & " MB" & " " & description
    15. MessageBox.Show(infos)
    16. Next
    17. End Sub
    18. Private Function GetMegaBytes(ByVal bytes As Long) As Double
    19. Return bytes / 1024 / 1024
    20. End Function
    21. End Class


    EDIT: Codeabschnitt nochmal erneuert, da der davor Quatsch war :)
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SpaceyX“ ()

    SpaceyX schrieb:

    Huhu,

    ja, WorkingSet64 gibt Dir nen Long zurück, der die belegten Bytes repräsentiert.

    1024 Byte sind ein KiloByte
    1024 KiloByte sind ein MegaByte
    1024 MegaByte sind ein GigaByte

    usw.

    Noch ein Beispiel, wie Du an die Beschreibung kommst. Aber hier aufpassen! Wenn Du ein 64Bit System hast und die Anwendung für X86 erstellt wird und der Prozess, von dem Du die Info willst, ein x64 ist, dann bekommst Du eine Ausnahme. X86 Prozesse haben keinen Zugriff auf X64 Prozess-Infos. Hab ich auch gerade erst gesehen. Darum ist in dem Code ein Try-Catch-Block. Kurz gesagt, wenn Du 64Bit hast und die Infos aller Prozesse willst, muss Deine Anwendung eine X64 Anwendung sein.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim p() As Process = Process.GetProcesses()
    4. Dim s As String = ""
    5. For Each proc As Process In p
    6. Dim usedMem As Double = GetMegaBytes(proc.WorkingSet64)
    7. Dim description As String = ""
    8. Dim infos As String = ""
    9. Try
    10. description = proc.MainModule.FileVersionInfo.FileDescription
    11. Catch ex As Exception
    12. description = "not available"
    13. End Try
    14. infos = usedMem.ToString("N2") & " MB" & " " & description
    15. MessageBox.Show(infos)
    16. Next
    17. End Sub
    18. Private Function GetMegaBytes(ByVal bytes As Long) As Double
    19. Return bytes / 1024 / 1024
    20. End Function
    21. End Class


    EDIT: Codeabschnitt nochmal erneuert, da der davor Quatsch war :)



    danke du hast mir echt weiter geholfen:)
    ist das so richtig?
    Ich schaus mir mal an, wart kurz.

    Huhu,

    ich hab mal bisschen was gelesen drüber. Eine genaue Antwort kann ich Dir leider nicht geben.

    VB.NET-Quellcode

    1. Dim usedMem As Double = GetMegaBytes(proc.PrivateMemorySize64)


    kommt den Angaben im Taskmanager am nächsten. Du musst evtl. selbst mal ein bisschen googeln über das Thema. Was ich noch gefunden hab, ist das hier:

    go4answers.webhost4life.com/Ex…n-memory-usage-91985.aspx

    Lies mal die Antworten dort und informier Dich bei MSDN, welcher Wert der Richtige ist.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SpaceyX“ ()