Prozesse auflisten

  • VB.NET

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

    Prozesse auflisten

    Hi,

    Also ich hab mir grad eine Art Taskmanager gebastelt.
    Dieser listet mit in einem ListView Prozessname, PID und CPU Nutzung an.
    Funzt auch alles wunderbar.
    Nun hab ich mir überlegt ob ich diese Items quasi direkt in eine Textdatei schreiben kann.
    Also, zuerst aktuell sieht das so aus:



    Nun würde ich es gerne so machen:

    Ich will auf das ListView verzeichten, und die Prozesse + PID + CPU jeweils in eine Txt schreiben.
    In der ersten Zeile der txt steht der processname, direkt dahinter die PID und dahinter die CPU nutzung.
    Für jeden prozess soll in der der txt Datei ne neue Zeile geschreiben werden.
    Soll heißen, ich will sie nicht vom ListView in ne Txt, sondern direkt beim button-klick in ne txt schreiben.
    Wie kann ich das machen? ;o

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Process As New Process()
    3. Dim x As Integer = 0
    4. ListView1.Items.Clear()
    5. For Each Process In Process.GetProcesses(My.Computer.Name)
    6. On Error Resume Next
    7. ListView1.Items.Add(Process.ProcessName)
    8. ListView1.Items(x).SubItems.Add(Process.Id)
    9. ListView1.Items(x).SubItems.Add(FormatNumber(Math.Round(Process.PrivateMemorySize64 / 1024), 0) + " K")
    10. x += 1
    11. Next
    12. End Sub
    C# Developer
    Learning C++

    Rikudo schrieb:

    VB.NET-Quellcode

    1. On Error Resume Next
    Ist dieser Befehl neu im 2012er Studio?
    Ich kenne ihn nämlich nicht. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sieh dir das hier mal an.

    VB.NET-Quellcode

    1. For Each Process As Process In Diagnostics.Process.GetProcesses(My.Computer.Name)
    2. MessageBox.Show(Process.ProcessName & "|" & Process.Id & "|" & FormatNumber(Math.Round(Process.PrivateMemorySize64 / 1024), 0) + " K")
    3. Next

    Anstatt der MsgBox könntest du sie einfach in eine Textdatei schreiben.
    Würde ich aber nicht machen, sondern als irgendein "besseres" Dateiformat. z.B XML
    Was willst du denn mit der gespeicherten Datei machen ?
    Jenachdem was, findet sich da sicherlich etwas besseres.

    PS: Eventuell Environment.UserDomainName statt den My-Namespace.
    @LaMiy: Perfekt. Genau so hab ichs mir vorgestellt, vielen Dank:)

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. For Each Process As Process In Diagnostics.Process.GetProcesses(My.Computer.Name)
    3. File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Proc.txt", Process.ProcessName & " " & Process.Id & " " & FormatNumber(Math.Round(Process.PrivateMemorySize64 / 1024), 0) + " K" + vbNewLine)
    4. Next
    5. MsgBox("Done", MsgBoxStyle.Information)
    6. End Sub
    C# Developer
    Learning C++