debigging93
Goto Top

Visual Basic Textbox Multiline und Prozessüberprüfungs Problem

Hallo

ich habe bei meinem VB-Programm ein paar Probleme.
Ich möchte Prozesse überwachen ob diese An oder Aus sind. Um mehrere Prozesse zu überwachen habe ich eine Textbox Multiline
in der mehrere Prozesse stehen ..als Überprüfung dieser setz ich diesen Code ein:

Sobald ein Prozess aus ist soll er mich warnen


 
  For Each zeile As String In ProzessListe.Lines
            Dim listProc() As System.Diagnostics.Process
            listProc = System.Diagnostics.Process.GetProcessesByName(zeile)

            If listProc.Length > 0 Then
ProzessIstAn.Text = "Alle Prozesse sind an"  
            Else
MsgBox("Prozesse sind aus")  
End if


Next

funktioniert zwar aber leider nicht sehr zuverlässig. Kennt jemand eine bessere Lösung um Multilines auszulesen?

Danke schon mal face-smile

Content-Key: 290707

Url: https://administrator.de/contentid/290707

Printed on: April 25, 2024 at 08:04 o'clock

Mitglied: 122990
Solution 122990 Dec 11, 2015 updated at 22:29:48 (UTC)
Goto Top
Moin,
funktioniert zwar aber leider nicht sehr zuverlässig.
Was heißt unzuverlässig in "Fehlermeldung" ? Vermutlich Leerzeichen nicht getrimmt() face-wink

Mach das doch z.B. mit einem ListView-Control im Details-Mode und zwei Columns

579413ec5af41cb66268887fb82a982d

With lv1
    .Items.Clear()
    Dim processes() As String = {"outlook", "calc", "powershell", "excel"}  
    For Each proc In processes
        .Items.Add(proc)
    Next
    For Each itm As ListViewItem In .Items
        If Process.GetProcessesByName(itm.Text).Length > 0 Then
            itm.SubItems.Add("Online")  
            itm.BackColor = Color.LightGreen
        Else
            itm.SubItems.Add("Offline")  
            itm.BackColor = Color.OrangeRed
        End If
    Next
End With
Gruß grexit
Member: debigging93
debigging93 Dec 11, 2015 updated at 18:22:36 (UTC)
Goto Top
Erstmal danke für die Antwort und den Vorschlag.Leider habe ich mit ListView keine Erfahrung..da muss ich erstmal schauen das ich es so hinbekomm wie in deinem Beispiel :P .

Also zu meinem funktioniert nicht sehr zuverlässig .. Ich lass mir den aktuellen Status der Prozesse in einer ListBox anzeigen .. Sobald einer Aus geht bzw. aus ist..Übergeb ich den Status der Listbox an eine Textbox und diese wird mir dann via MSGBOX angezeigt ..bestimmt sehr umständlich aber ich bin Anfänger :P
Die Sache ist..wenn ich z.b 2x den Prozess: Test im Abstand von 10 Sek prüfen lass..dann gibt er mir 1mal eine MSGBOX mit Inhalt( Test ist aus ...Test ist aus) und direkt danach das ganze doppelt nochmal also (Test ist aus...Test ist aus...Test ist aus..Test ist aus)

-->Ok das mit ListView hab ich hinbekomm..sieht gleich viel besser aus danke dafür schonmal face-smile
Mitglied: 122990
122990 Dec 11, 2015 updated at 18:26:21 (UTC)
Goto Top
Die Sache ist..wenn ich z.b 2x den Prozess: Test im Abstand von 10 Sek prüfen lass..dann gibt er mir 1mal eine MSGBOX mit Inhalt( Test ist aus ...Test ist aus) und direkt danach das ganze doppelt nochmal also (Test ist aus...Test ist aus...Test ist aus..Test ist aus)
Dann speichere dir den Benachrichtigungs-Status in einer Variablen (Hashtable/ArrayList je nach Gusto) welche du in deiner Schleife abfragst und nur dann eine Msgbox ausgibst wenn die Variable einen bestimmten Wert hat. Oder du nutzt den Rückgabewert der Msgbox als Statusvariable für die Benachrichtigung.

Die Frage ist ob hier eine MSGBox eher fehl am Platz ist, heutzutage gibt es so viele Mögichkeiten der Benachrichtigung (Controls/Traysymbol/EMail etc..pp) da ist eine MsgBox eher kontraproduktiv, die hat man schnell mal aus Versehen oder unbewusst beim Schreiben weggeklickt -gedrückt.
Member: debigging93
debigging93 Dec 11, 2015 at 18:48:48 (UTC)
Goto Top
Wie kann ich mir den das wo im ListView steht inkl. Absatz in eine TextBox übertragen lassen?
Member: debigging93
debigging93 Dec 11, 2015 at 20:00:15 (UTC)
Goto Top
Ich glaub ich habs hinbekomm..stand hart aufm Schlauch :D Das einzigste was ich mir leider auch mit Google.de nicht beantworten kann ist wie ich den kompletten Inhalt des ListView in eine TextBox bekomm evtl kannst du mir da nochmal helfen face-smile
Member: debigging93
debigging93 Dec 11, 2015 at 22:33:32 (UTC)
Goto Top
Danke grexit für deine Top Vorlage face-smile Mal ne Stunde Pause und Ich hab verstanden was du mir damit genau zeigen wolltest :D

Für alle die es Interessiert hier der Code um ein ListView komplett auszulesen und z.b in einer TextBox anzeigen zulassen:

Imports System.Text

   Public Sub ListviewItemsToClipboard(ByVal control As ListView)
      Dim Data As New StringBuilder
      Dim Item As ListViewItem

      For L As Integer = 0 To control.Items.Count - 1
         Item = control.Items(L)

         For M As Integer = 0 To Item.SubItems.Count - 1
            Data.Append(Item.SubItems(M).Text)
            If M <> Item.SubItems.Count - 1 Then
               Data.Append(ControlChars.Tab)
            End If
         Next
         Data.Append(ControlChars.CrLf)
      Next

      Clipboard.SetDataObject(Data.ToString, True)

TextBoxXYZ.Text = Data.ToString 

   End Sub


Danke und bis zur nächsten Frage face-smile