Results 1 to 3 of 3

Thread: VB code to kill running processes

  1. #1
    Join Date
    Jun 2009

    VB code to kill running processes

    I am a VB developer, and I am looking for a simple way to kill any running process. I know this can be done using Windows Task Manager but I want it via codes. I want to create my own code rather then depending on some software or freeware to do the operation. Has anyone tried to build any code in VB that kills running applications?

  2. #2
    Join Date
    Nov 2008

    Re: VB code to kill running processes

    Option Explicit
    Const MAX& = 260
    Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
    Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
    Declare Function ProcessFirst Lib "kernel32" Alias "Proc32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Declare Function ProcessNext Lib "kernel32" Alias "Proc32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhlp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Type LUID
       low As Long
       high As Long
    End Type
        PrivilegeCount As Long
        LuidUDT As LUID
        Attributes As Long
    End Type
    Const TOKEN_QUERY = &H8
    Private Declare Function GetVersion Lib "kernel32" () As Long
    Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
    Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
    Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
    Private Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As Any, ReturnLength As Any) As Long
      dwSize As Long
      cntUsage As Long
      th32ProcessID As Long
      th32DefaultHeapID As Long
      th32ModuleID As Long
      cntThreads As Long
      th32ParentProcessID As Long
      pcPriClassBase As Long
      dwFlags As Long
      szexeFile As String * MAX
    End Type
    Public Function KillApp(myName As String) As Boolean
       Const TH32CS_SNAPPROCESS As Long = 2&
       Const PROCESS_ALL_ACCESS = 0
       Dim myProcess As PROCESSENTRY32
       Dim rProcessFound As Long
       Dim hSnapshot As Long
       Dim szExename As String
       Dim exitCode As Long
       Dim myProcess As Long
       Dim AppKill As Boolean
       Dim appCount As Integer
       Dim i As Integer
       On Local Error GoTo Finish
       appCount = 0
       myProcess.dwSize = Len(myProcess)
       hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
       rProcessFound = ProcessFirst(hSnapshot, myProcess)
       Do While rProcessFound
           i = InStr(1, myProcess.szexeFile, Chr(0))
           szExename = LCase$(Left$(myProcess.szexeFile, i - 1))
           If Right$(szExename, Len(myName)) = LCase$(myName) Then
               KillApp = True
               appCount = appCount + 1
               myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, myProcess.th32ProcessID)
                If KillProcess(myProcess.th32ProcessID, 0) Then
                    MsgBox "Instance no. " & appCount & " of " & szExename & " was terminated!"
                End If
           End If
           rProcessFound = ProcessNext(hSnapshot, myProcess)
       Call CloseHandle(hSnapshot)
       Exit Function
        MsgBox "Error!"
    End Function
    Function KillProcess(ByVal hProcessID As Long, Optional ByVal exitCode As Long) As Boolean
        Dim hToken As Long
        Dim hProcess As Long
        Dim tp As TOKEN_PRIVILEGES
        If GetVersion() >= 0 Then
            If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken) = 0 Then
                GoTo CleanUp
            End If
            If LookupPrivilegeValue("", "SeDebugPrivilege", tp.LuidUDT) = 0 Then
                GoTo CleanUp
            End If
            tp.PrivilegeCount = 1
            tp.Attributes = SE_PRIVILEGE_ENABLED
            If AdjustTokenPrivileges(hToken, False, tp, 0, ByVal 0&, ByVal 0&) = 0 Then
                GoTo CleanUp
            End If
        End If
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, hProcessID)
        If hProcess Then
            KillProcess = (TerminateProcess(hProcess, exitCode) <> 0)
            CloseHandle hProcess
        End If
        If GetVersion() >= 0 Then
            tp.Attributes = 0
            AdjustTokenPrivileges hToken, False, tp, 0, ByVal 0&, ByVal 0&
            If hToken Then CloseHandle hToken
        End If
    End Function
    Private Sub cmdKill_Click()
        Dim pID As Long
        Dim i As Integer
        Dim strExe As String
        strExe = "Notepad.Exe"
        For i = 0 To 4
            pID = Shell(strExe, vbNormalFocus)
        Next i
        Debug.Assert False
        MsgBox "It is " & KillApp(strExe) & " that all instances of " & vbCrLf & strExe & " have been terminated!"
    End Sub

  3. #3
    Join Date
    May 2008

    Re: VB code to kill running processes

    Here is a simpler code:

    Dim CurrentProcess As System.Diagnostics.Process = Process.GetProcessesByName("explorer.exe")(0)

Similar Threads

  1. Is it safe to kill all background processes in ICS devices
    By Gautama-Gopa in forum Portable Devices
    Replies: 3
    Last Post: 22-08-2012, 04:22 PM
  2. how can i create a Batch file to kill some processes by name
    By Hansel Ortiz -[BrEcHaWarr] in forum Windows Server Help
    Replies: 7
    Last Post: 07-06-2012, 11:24 AM
  3. How many processes do you have running
    By Langward in forum Overclocking & Computer Modification
    Replies: 4
    Last Post: 21-03-2010, 01:38 AM
    By j90qfj90q34fjwefi2 in forum Vista Help
    Replies: 12
    Last Post: 31-01-2010, 03:24 AM
  5. Replies: 1
    Last Post: 11-02-2009, 10:32 PM

Tags for this Thread


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Page generated in 1,652,758,527.92703 seconds with 17 queries