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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


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