Option Explicit
Private Const PROCESS_TERMINATE As Long = &H1
Private Const PROCESS_QUERY_INFORMATION As Long = 1024
Private Const PROCESS_VM_READ As Long = 16
Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcId As Long) As Long
Private Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, _
ByVal cb As Long, _
ByRef cbNeeded As Long) As Long
Private Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, _
ByVal hModule As Long, _
ByVal ModuleName As String, _
ByVal nSize As Long) As Long
Private Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, _
ByRef lphModule As Long, _
ByVal cb As Long, _
ByRef cbNeeded As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _
ByVal uExitCode As Long) As Long
Private Function KillProcByName(ByVal strProcName As String) As Long
Dim lngProc As Long
Dim lngProcIDs() As Long
Dim lngModules(0) As Long
Dim strModule As String
Dim lngRet As Long
Dim lngCb As Long
Dim lngCbNeeded As Long
Dim lngCbNeeded2 As Long
Dim intLoop As Long
lngCb = 8
lngCbNeeded = 96
Do While lngCb <= lngCbNeeded
lngCb = lngCb * 2
ReDim lngProcIDs(lngCb / 4) As Long
lngRet = EnumProcesses(lngProcIDs(0), lngCb, lngCbNeeded)
Loop
For intLoop = 1 To (lngCbNeeded / 4)
lngProc = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ Or PROCESS_TERMINATE, 0, lngProcIDs(intLoop))
If lngProc <> 0 Then
lngRet = EnumProcessModules(lngProc, lngModules(0), 1, lngCbNeeded2)
If lngRet <> 0 Then
strModule = Space$(256)
GetModuleFileNameExA lngProc, lngModules(0), strModule, Len(strModule)
strModule = Left$(strModule, InStr(1, strModule, vbNullChar) - 1)
If StrComp(Right$(strModule, Len(strProcName)), strProcName, vbTextCompare) = 0 Then
TerminateProcess lngProc, 0
KillProcByName = KillProcByName + 1
End If
End If
End If
CloseHandle lngProc
Next intLoop
End Function
Private Sub Timer1_Timer()
Dim i As Long
On Error Resume Next
KillProcByName "\iinstall.exe"
KillProcByName "\istsvc.exe"
With File1
.Path = "c:\program files\istbar"
.Refresh
For i = 0 To .ListCount - 1
Kill .List(i)
Next i
End With
With File1
.Path = "c:\program files\ISTsvc"
.Refresh
For i = 0 To .ListCount - 1
Kill .List(i)
Next i
End With
On Error GoTo 0
End Sub