ahstax
Goto Top

Result von msg.exe abfragen

Hallo miteinander,

mit einem Code werden alle PCs (Win7) und die daran angemeldeten User im Netzwerk abgefragt. Diese Infos werden in eine CheckedListBox geladen (Formatierung: vbTab & User & vbTab & vbTab & PC). An darin ausgewählte Personen kann man dann eine Nachricht (mit msg.exe) senden (ohne, dass auf der anderen Seite ein Programm außer den Bord-Mitteln läuft). Die Nachricht wird versendet mit folgendem Code:

Public Sub NachrichtVersenden()

        Dim p1 As New System.Diagnostics.Process
        Dim applicationPath As String = Application.StartupPath
        Dim executablePath As String = applicationPath & "\msg.exe"  
        Dim strEmpfaengerDaten As String()
        Dim Nachricht As String = Nothing

        For Each Item As String In chlsBoxEmpfaenger.CheckedItems

            strEmpfaengerDaten = Split(Item, vbTab)

            'MsgBox(strEmpfaengerDaten.Length)  
            'Kürzel  
            'MsgBox(strEmpfaengerDaten(1))  
            'PC-Name  
            'MsgBox(strEmpfaengerDaten(3))  

            Nachricht = txtBoxNachricht.Text

            If My.Computer.Network.Ping(strEmpfaengerDaten(3), 500) = True Then

                With p1.StartInfo

                    .FileName = executablePath

                    If strEmpfaengerDaten(1) = "" Then  
                        strEmpfaengerDaten(1) = "*"  
                    End If
                    .Arguments = strEmpfaengerDaten(1) & " /SERVER:" & strEmpfaengerDaten(3) & " /time:3600 /v " & Nachricht  
                    .UseShellExecute = False
                    .ErrorDialog = False
                    .RedirectStandardOutput = True
                    .RedirectStandardError = True
                    .CreateNoWindow = True

                End With
                With p1
                    .Start()
                    .WaitForExit()
                End With
            End If

        Next

        MsgBox("Nachricht" & vbCrLf & vbCrLf & Nachricht & vbCrLf & vbCrLf & "wurde versendet.", , "Info")  
        UnCheckAll()
        txtBoxNachricht.Text = ""  

    End Sub

Das klappt auch (soweit).
Ich würde nun gerne feststellen können, ob beim Übermitteln der Nachricht ein Fehler aufgetreten ist.
Bei der Abfrage der PCs funktioniert das (so was ähnliches) mit

With p0.StartInfo
                .CreateNoWindow = True
                .FileName = "net.exe"  
                .Arguments = " view"  
                .RedirectStandardOutput = True
                .UseShellExecute = False

                With p0
                    .Start()
                    .WaitForExit(1000)
                    Dim result As String = ""  
                    While .StandardOutput.Peek > -1
                        result = .StandardOutput.ReadLine()
...

Ich habe versucht, das entsprechend anzupassen. Aber irgendwie scheint msg.exe kein Feedback bereitzustellen...?

Fragen:
Wie kann ich ein Result von msg.exe (zumindest Fehler) auswerten?
Gibt es eine einfache Alternative zu msg.exe?

Ich freue mich auf Hinweise.

Neugierige Grüße,
Andreas

Content-ID: 217233

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

Ausgedruckt am: 23.11.2024 um 03:11 Uhr

Nobody-Is-Perfect
Nobody-Is-Perfect 18.09.2013 aktualisiert um 14:25:27 Uhr
Goto Top
Hi Andreas,

ohne den Code jetzt nachstellen zu wollen, hätte ich aber eine Idee.
Jeder Process liefert einen ExitCode (nachzulesen: hier ).
Jedes so ausgeführte Programm hat Rückgabewerte. Der Rückgabewert 0 bedeutet für gewöhnlich ohne Fehler beendet.

Ich hoffe, das hilft.

Grüße vom Nobody
ahstax
ahstax 18.09.2013 um 14:32:49 Uhr
Goto Top
Danke, das wars!!!