Versuch folgendes:
Spoiler anzeigen
Aufgerufen wird die Klasse so:
Das Versucht zuerst den Prozess über kill zu beenden, schlägt dies fehl wird dieser terminiert.
Achtung: Der Terminate Befehl kann evtl. zu System-Instabilität führen!!
VB.NET-Quellcode
- Public Class KillProgramm
- <System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError:=True, CharSet:=System.Runtime.InteropServices.CharSet.Auto, CallingConvention:=System.Runtime.InteropServices.CallingConvention.StdCall)> _
- Private Shared Function TerminateProcess(ByVal hwnd As IntPtr, ByVal uExitCode As Integer) As Boolean
- End Function
- ''' <summary>
- ''' Versucht einen Prozess zu beenden.
- ''' </summary>
- ''' <param name="Name">Name des Prozesses</param>
- ''' <param name="WaitFor">Wieviele Millisekunden soll zwischen den Versuchen gewartet werden</param>
- ''' <param name="Trys">Wie oft soll es versucht werden bis der Prozess Terminiert wird</param>
- ''' <param name="Silent">Bei False wird eine Userabfrage eingeblendet</param>
- ''' <example><code>KillProgramm.Kill("NameDesProgramms")</code></example>
- ''' <remarks></remarks>
- Public Shared Sub Kill(ByVal Name As String, Optional ByVal WaitFor As Integer = 1000, Optional ByVal Trys As Integer = 15, Optional ByVal Silent As Boolean = True)
- Dim KillTrys As Integer = 0
- Do Until KillTrys >= Trys
- For Each Process In System.Diagnostics.Process.GetProcessesByName(Name)
- Process.Kill()
- System.Threading.Thread.Sleep(WaitFor)
- If System.Diagnostics.Process.GetProcessesByName(Name).Count > 0 Then
- KillTrys += 1
- Else
- KillTrys = Trys + 1
- End If
- Next
- Loop
- If System.Diagnostics.Process.GetProcessesByName(Name).Count > 0 Then
- If Silent OrElse MsgBox(String.Format("Terminate all processes({0})?", Name), vbYesNo) = DialogResult.Yes Then
- For Each p As Process In System.Diagnostics.Process.GetProcessesByName(Name)
- TerminateProcess(p.Handle, 0)
- Next
- End If
- End If
- End Sub
- End Class
Aufgerufen wird die Klasse so:
Das Versucht zuerst den Prozess über kill zu beenden, schlägt dies fehl wird dieser terminiert.
Achtung: Der Terminate Befehl kann evtl. zu System-Instabilität führen!!
SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=
Weil einfach, einfach zu einfach ist!
Weil einfach, einfach zu einfach ist!