Would there happen to be...

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • CajunCoiler \(http://www.cajuncoiler.tk\)

    #1

    Would there happen to be...

    By any chance, would there happen to be an API function available
    that would allow me to terminate a process by name (as it appears
    in the task manager list) ?


  • Raoul Watson

    #2
    Re: Would there happen to be...


    "CajunCoile r (http://www.cajuncoiler .tk)"
    <poohbear1961@t otallyspamless. cox.net> wrote in message
    news:wWkfb.4762 4$a16.21207@lak eread01...[color=blue]
    > By any chance, would there happen to be an API function available
    > that would allow me to terminate a process by name (as it appears
    > in the task manager list) ?
    >[/color]

    Try this see if it suits your need. Got some extras as well on handling
    processes.

    Make sure you save all your work before testing since killing the wrong
    process will freeze your computer..

    ' Module level (*.bas)
    Declare Function TerminateProces s 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
    "Process32First " (ByVal hSnapshot As Long, uProcess As
    PROCESSENTRY32) As Long
    Declare Function ProcessNext Lib "kernel32" Alias
    "Process32N ext" (ByVal hSnapshot As Long, uProcess As
    PROCESSENTRY32) As Long
    Declare Function CreateToolhelpS napshot Lib "kernel32" Alias
    "CreateToolhelp 32Snapshot" (ByVal lFlags As Long, lProcessID
    As Long) As Long
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
    Long) As Long


    Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeap ID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProce ssID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szexeFile As String * 260
    End Type

    Public Declare Function RegisterService Process Lib "kernel32"
    (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
    Public Declare Function GetCurrentProce ssId Lib "kernel32" ()
    As Long

    'Now on your form, add a list control, a textbox, and a
    'command button (and this code):

    Option Explicit

    Private Sub Command1_Click( )
    KillApp (Text1.Text)
    End Sub

    Public Function KillApp(Process Name As String) As Boolean
    Const PROCESS_ALL_ACC ESS = 0
    Dim uProcess 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 done
    appCount = 0
    Const TH32CS_SNAPPROC ESS As Long = 2&
    uProcess.dwSize = Len(uProcess)
    hSnapshot = CreateToolhelpS napshot(TH32CS_ SNAPPROCESS,0&)

    rProcessFound = ProcessFirst(hS napshot, uProcess)
    List1.Clear
    ' populates the list
    Do While rProcessFound
    i = InStr(1, uProcess.szexeF ile, Chr(0))
    szExename = LCase$(Left$(uP rocess.szexeFil e, i - 1))
    List1.AddItem (szExename)
    If Right$(szExenam e, Len(ProcessName )) =
    LCase$(ProcessN ame) Then
    KillApp = True
    appCount = appCount + 1
    myProcess = OpenProcess(PRO CESS_ALL_ACCESS , False,
    uProcess.th32Pr ocessID)
    AppKill = TerminateProces s(myProcess, exitCode)
    Call CloseHandle(myP rocess)
    End If
    rProcessFound = ProcessNext(hSn apshot, uProcess)
    Loop
    Call CloseHandle(hSn apshot)
    done:
    End Function

    Private Sub Form_Load()
    KillApp ("initialize ") 'build our list
    ' Hide our app so we don't get killed
    RegisterService Process GetCurrentProce ssId, 1
    End Sub

    Private Sub Form_Unload(Can cel As Integer)
    RegisterService Process GetCurrentProce ssId, 0
    End Sub

    Private Sub List1_Click()
    Text1.Text = List1.List(List 1.ListIndex)
    End Sub

    'Caution: Killing a process that might be the system, may yield
    'some unpredictable results.


    Comment

    • CajunCoiler \(http://www.cajuncoiler.tk\)

      #3
      Re: Would there happen to be...

      Thanks, I'll try it, and see if does any better than the other routines I've
      tried.
      [color=blue][color=green]
      > > By any chance, would there happen to be an API function available
      > > that would allow me to terminate a process by name (as it appears
      > > in the task manager list) ?[/color]
      >
      > Try this see if it suits your need. Got some extras as well on handling
      > processes.[/color]


      Comment

      Working...