Hallo zusammen,
ich habe eine schöne Funktion die Prüft ob ein Process läuft, klappt alles wunderbar. Und wenn er läuft, soll ein Object erzeugt werden mit dem Process usw..., damit habe ich alles kein Problem. Das Problem habe ich wenn das Programm gerade geschlossen wird, was schon mal 2-3 Sekunden dauern kann und dann meine Funktion versucht das Object zu erzeugen. Natürlich knallt das und selbst mit Try kriege ich es nicht hin, das meine Funktion damit klar kommt. Es kommt entweder die Messagebox mit dem Fehler das das Object nicht mehr existiert und wenn ich diese Ausblende friert das ganze Programm (mein Programm) ein oder er versucht das Programm (AGVIP) zu öffnen.
Kann man irgendwie erkennen wenn ein Programm gerade geschlossen wird?! Oder habe ihr eine Idee wie man das lösen könnte?
Ich kann nicht noch mal nach 3 Sek. eine zweite Prüfung machen lassen, es muss möglichst schnell laufen!
Hier mein Code:
ich habe eine schöne Funktion die Prüft ob ein Process läuft, klappt alles wunderbar. Und wenn er läuft, soll ein Object erzeugt werden mit dem Process usw..., damit habe ich alles kein Problem. Das Problem habe ich wenn das Programm gerade geschlossen wird, was schon mal 2-3 Sekunden dauern kann und dann meine Funktion versucht das Object zu erzeugen. Natürlich knallt das und selbst mit Try kriege ich es nicht hin, das meine Funktion damit klar kommt. Es kommt entweder die Messagebox mit dem Fehler das das Object nicht mehr existiert und wenn ich diese Ausblende friert das ganze Programm (mein Programm) ein oder er versucht das Programm (AGVIP) zu öffnen.
Kann man irgendwie erkennen wenn ein Programm gerade geschlossen wird?! Oder habe ihr eine Idee wie man das lösen könnte?
Ich kann nicht noch mal nach 3 Sek. eine zweite Prüfung machen lassen, es muss möglichst schnell laufen!
Hier mein Code:
VB.NET-Quellcode
-
- Public Function ActivesTelefonat()
- Dim n As Boolean = False
- For Each oProcess As Process In System.Diagnostics.Process.GetProcessesByName("AGVIP")
- If oProcess.SessionId = System.Diagnostics.Process.GetCurrentProcess().SessionId Then
- n = True
- End If
- Next
- If n = True Then
- Try
- Dim Application As New AgvipApplication
- Dim ActiveCall As Object = Application.ActiveCall
- If ActiveCall Is Nothing Then
- Return vbFalse
- Else
- If Application.ActiveCall.IsConnected = vbTrue Then
- Return vbTrue
- Else
- Return vbFalse
- End If
- End If
- Catch ex As System.Exception
- 'MsgBox(ex.Message)
- Return vbFalse
- End Try
- Else
- Return vbFalse
- End If
- End Function