hi to all! i need some help. My problem is how to code the terminating current process, actually it is like a task manager. i hope somebody will answer my question. thanks to all...

Asaness, my apologies. I have read your post and replied with the incorrect solution. Herewith the correct solution that I have posted a while ago also on Daniweb. The code works 100% fine. -

'In a module add the following ---Public Type PROCESSENTRY32     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 * 260 End Type '------------------------------------------------------- Public Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, _ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long  Public Declare Function ProcessFirst Lib "kernel32.dll" Alias "Process32First" (ByVal hSnapshot As Long, _uProcess As PROCESSENTRY32) As Long  Public Declare Function ProcessNext Lib "kernel32.dll" Alias "Process32Next" (ByVal hSnapshot As Long, _uProcess As PROCESSENTRY32) As Long  Public Declare Function CreateToolhelpSnapshot Lib "kernel32.dll" Alias "CreateToolhelp32Snapshot" ( _ByVal lFlags As Long, lProcessID As Long) As Long  Public Declare Function TerminateProcess Lib "kernel32.dll" (ByVal ApphProcess As Long, _ByVal uExitCode As Long) As Long  Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long 'Then the following ---->Public Sub KillProcess(NameProcess As String) Const PROCESS_ALL_ACCESS = &H1F0FFF Const TH32CS_SNAPPROCESS As Long = 2& 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 Dim WinDirEnv As String         If NameProcess <> "" Then           AppCount = 0            uProcess.dwSize = Len(uProcess)           hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)           RProcessFound = ProcessFirst(hSnapshot, uProcess)            Do             i = InStr(1, uProcess.szexeFile, Chr(0))             SzExename = LCase$(Left$(uProcess.szexeFile, i - 1))             WinDirEnv = Environ("Windir") + "\"             WinDirEnv = LCase$(WinDirEnv)              If Right$(SzExename, Len(NameProcess)) = LCase$(NameProcess) Then                AppCount = AppCount + 1                MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)                AppKill = TerminateProcess(MyProcess, ExitCode)                Call CloseHandle(MyProcess)             End If             RProcessFound = ProcessNext(hSnapshot, uProcess)           Loop While RProcessFound           Call CloseHandle(hSnapshot)        End If  End Sub  'In your form by u ing a command button etc, use the following --->Call KillProcess(Mozilla.exe)'In a module add the following ---
Public Type PROCESSENTRY32 
    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 * 260 
End Type 
'------------------------------------------------------- 
Public Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, _
ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long 

Public Declare Function ProcessFirst Lib "kernel32.dll" Alias "Process32First" (ByVal hSnapshot As Long, _
uProcess As PROCESSENTRY32) As Long 

Public Declare Function ProcessNext Lib "kernel32.dll" Alias "Process32Next" (ByVal hSnapshot As Long, _
uProcess As PROCESSENTRY32) As Long 

Public Declare Function CreateToolhelpSnapshot Lib "kernel32.dll" Alias "CreateToolhelp32Snapshot" ( _
ByVal lFlags As Long, lProcessID As Long) As Long 

Public Declare Function TerminateProcess Lib "kernel32.dll" (ByVal ApphProcess As Long, _
ByVal uExitCode As Long) As Long 

Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long

'Then the following ---->
Public Sub KillProcess(NameProcess As String) 
Const PROCESS_ALL_ACCESS = &H1F0FFF 
Const TH32CS_SNAPPROCESS As Long = 2& 
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 
Dim WinDirEnv As String 
        
       If NameProcess <> "" Then 
          AppCount = 0 

          uProcess.dwSize = Len(uProcess) 
          hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) 
          RProcessFound = ProcessFirst(hSnapshot, uProcess) 
  
          Do 
            i = InStr(1, uProcess.szexeFile, Chr(0)) 
            SzExename = LCase$(Left$(uProcess.szexeFile, i - 1)) 
            WinDirEnv = Environ("Windir") + "\" 
            WinDirEnv = LCase$(WinDirEnv) 
        
            If Right$(SzExename, Len(NameProcess)) = LCase$(NameProcess) Then 
               AppCount = AppCount + 1 
               MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID) 
               AppKill = TerminateProcess(MyProcess, ExitCode) 
               Call CloseHandle(MyProcess) 
            End If 
            RProcessFound = ProcessNext(hSnapshot, uProcess) 
          Loop While RProcessFound 
          Call CloseHandle(hSnapshot) 
       End If 

End Sub 

'In your form by u ing a command button etc, use the following --->
Call KillProcess(<strong class="highlight">Mozilla.exe</strong>)

Five years ago, I've encountered a programming book entitled, "Visual Basic 6 Complete." There is a chapter there that has an exhaustive treatment on accessing, controlling, and terminating processes in real time within a VB6 application.

I forgot the publisher. It's actually a compendium, with chapters having different authors (one of them is Wynn (or Lynn?) Freeze, my fave VB6 guru). I lost my copy of that one: I hope you can find yours. I assure you it helped me a lot when I started "migrating" from Turbo Pascal for DOS to VB6...

Good luck.

Edited 6 Years Ago by aka_amboy: typos

This article has been dead for over six months. Start a new discussion instead.