VB ListView icon den Prozessen zuweisen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Lacky100.

    VB ListView icon den Prozessen zuweisen

    Hallo,
    Ich habe mir eine Prozess Explorer geschrieben, der alle laufende Prozesse in eine Listview und mit einem icon anzeigt.
    Mein Problem ist, momentan wird nur ein icon für alle Prozesse dargestellt.
    Hat jemand eine Idee wie ich anhand des Prozesse Namens den richtigen icon zuweisen kann.
    Leider arbeite ich zum ersten Mal mit einer ListView.

    beispiel:

    VB.NET-Quellcode

    1. If p.ProcessName = "taskmgr" Then
    2. ListView1.Items(p.ProcessName).ImageIndex = 51
    3. ElseIf p.ProcessName = "svchost" Then
    4. ListView1.Items(p.ProcessName).ImageIndex = 45
    5. ElseIf p.ProcessName = "ccSvcHs" Then
    6. ListView1.Items(p.ProcessName).ImageIndex = 2
    7. End If


    pc-mosoft.de/pze.JPG

    danke im voraus!!

    P-schmitz :rolleyes:
    Hallo rykoJLL ,

    danke für die Antwort, aber ich verwende eine ImageList1 in den sich meine icons befinden. (ImageIndex = 1 bis ImageIndex = 200).

    Hi
    braucht's vmtl. nicht mal. Füge einfach die Images mit den entsprechenden Keys ein. Als Key kannst du den Prozessnamen wählen und statt ImageIndex dann halt ImageKey setzen.
    Achja: verwende zum ermitteln der Icons die Methode, die rykoJLL gepostet hat, den Pfad des Hauptmoduls findest du per Process.MainModule.FileName heraus, sofern du entsprechende Zugriffsrechte hast.

    Gruß
    ~blaze~
    Hallo,

    danke für den Tipp, denn alles andere macht kein Sinn. Wenn ich über eine If Abfrage mache,

    müsste ich 2 Millionen .exe den Index zuweisen. Das ist ne Lebens Aufgabe.

    VB.NET-Quellcode

    1. Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
    2. Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As IntPtr, ByVal lpszExeFileName As String, ByVal nIconIndex As Integer) As IntPtr
    3. Private Sub ProzessAktivepcmo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Dim hIcon As IntPtrhIcon = ExtractIcon(Me.Handle, "%SystemRoot%\System32\shell32.dll", 3)
    5. If hIcon <> 0 And hIcon <> 1 ThenDim ic As Icon = Icon.FromHandle(hIcon)
    6. PictureBox1.Image = ic.ToBitmap
    7. End If
    8. End Sub
    9. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.ClickListView1.View = View.Details
    10. ListView1.SmallImageList = ImageList1
    11. ListView1.Columns.Add("Bezeichnung:", 150, HorizontalAlignment.Left)ListView1.Columns.Add("PID:", 50, HorizontalAlignment.Left)
    12. ListView1.Columns.Add("Pfad:", 450, HorizontalAlignment.Left)ListView1.Columns.Add("Details:", 300, HorizontalAlignment.Left)
    13. ListView1.Columns.Add("Speicher:", 100, HorizontalAlignment.Left)
    14. TryFor Each p As Process In Process.GetProcesses
    15. Dim v As Object = Split(p.MainModule.FileName, p.ProcessName)With ListView1.Items.Add(p.ProcessName.ToString)
    16. .SubItems.Add(p.Id)
    17. .SubItems.Add(v(0))
    18. .SubItems.Add(p.MainWindowTitle)
    19. .SubItems.Add(p.PagedMemorySize64)
    20. '.ImageIndex = 0
    21. 'If p.ProcessName = ("svchost") Then
    22. ' .ImageIndex = 3
    23. 'ElseIf p.ProcessName = ("msiexec") Then
    24. ' .ImageIndex = 3
    25. 'ElseIf p.ProcessName = ("iexplore") Then
    26. ' .ImageIndex = 3
    27. 'ElseIf p.ProcessName = ("Webradio") Then
    28. ' .ImageIndex = 3
    29. 'Else : End If
    30. End With
    31. Next
    32. Catch ex As Exception
    33. End Try
    34. End Sub


    LG

    p-schmitz

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Lacky100“ ()

    Lacky100 schrieb:

    Wenn ich über eine If Abfrage mache,
    Suche mal Dictionary ==> Dictionary(Of String, Integer).
    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!
    Hallo,

    O.K das hört sich gut an (Dictionary), aber ich glaube da brauche ich Hilfe bei den Script..
    LG
    p-schmitz

    :S

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