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:
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
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 217233
Url: https://administrator.de/contentid/217233
Ausgedruckt am: 23.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
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
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