Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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
        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 Sub
End Module
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


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

 

 

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