Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB7
Expertise: Intermediate
Jul 13, 2002



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.Diagnostics

Module 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 If

        Dim arg As String = args(0)
        Dim proc As Process

            ' 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.")
            ElseIf procs.Length = 0 Then
                Console.WriteLine("Process not found. Unable to proceed")
            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
        End If

        ' wait for the process to end
        If proc.WaitForExit(1000) Then
            Console.WriteLine("Process {0} has been killed", proc.ProcessName)
            Console.WriteLine("Unable to kill process {0}", proc.ProcessName)
        End If
    End Sub
End Module
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date