Write a console utility to kill a process

Write a console utility to kill a process

The System.Diagnostics.Process class exposes two methods that let you kill a process: CloseMainWindow should be used with processes that have a graphical interface, whereas the Kill method should be used for apps without a user interface (or those whose main window is disable and can’t process the WM_CLOSE message).

It’s quite easy to use these methods (and a few others) to create a command-line utility that kills a process whose ID or name has been passed as an argument. Here’s the complete source code, you should just create a console application project and compile it to a properly named executable, such as KILLPROC:

Imports System.DiagnosticsModule Module1    Sub Main(ByVal args() As String)        ' check that we have only one argument        If args.Length  1 Then            Console.WriteLine("SYNTAX: KillProc pid | procname")            End        End If        Dim arg As String = args(0)        Dim proc As Process        Try            ' attempt to use the argument as a PID            proc = Process.GetProcessById(CInt(arg))        Catch ex As Exception            ' ignore exceptions        End Try        If proc Is Nothing Then            ' attempt to use the argument as a process name            Dim procs() As Process = Process.GetProcessesByName(arg)            If procs.Length = 1 Then                ' we've found the process                proc = procs(0)            ElseIf procs.Length > 1 Then                Console.WriteLine _                    ("Process name is ambiguous. Unable to proceed.")                End            ElseIf procs.Length = 0 Then                Console.WriteLine("Process not found. Unable to proceed")                End            End If        End If        ' kill the process        Dim res As Boolean        ' attempt to kill the process by closing its main window        res = proc.CloseMainWindow()        If res = False Then            ' no UI or the window is disabled            proc.Kill()        End If        ' wait for the process to end        If proc.WaitForExit(1000) Then            Console.WriteLine("Process {0} has been killed", proc.ProcessName)        Else            Console.WriteLine("Unable to kill process {0}", proc.ProcessName)        End If    End SubEnd Module


Share the Post: