'====================================================== ' Kill any application or process running if you know ' the .exe name. (Only Windows 95/98) '====================================================== Const MAX_PATH& = 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 "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (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 th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szexeFile As String * MAX_PATH End Type '====================================================== ' Name: KillApp ' Description: Kill any application or process running if you know the .exe name. ' ' Inputs:myName: is the name of the app that wou want to kill (ex. "app.exe") ' ' Returns:True if the application was killed correctly ' ' Side Effects: Morte application :) ' '====================================================== Public Function KillApp(myName As String) As Boolean Const PROCESS_ALL_ACCESS = 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 Finish appCount = 0 Const TH32CS_SNAPPROCESS As Long = 2& uProcess.dwSize = Len(uProcess) hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) rProcessFound = ProcessFirst(hSnapshot, uProcess) Do While rProcessFound i = InStr(1, uProcess.szexeFile, Chr(0)) szExename = LCase$(Left$(uProcess.szexeFile, i - 1)) If Right$(szExename, Len(myName)) = LCase$(myName) Then KillApp = True appCount = appCount + 1 myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID) AppKill = TerminateProcess(myProcess, exitCode) Call CloseHandle(myProcess) End If 'C:\Program Files\Network Associates\VirusScan If InStr(1, UCase(szExename), "NOVELL", vbTextCompare) <> 0 Or _ InStr(1, UCase(szExename), "VIRUSSCAN", vbTextCompare) <> 0 Then If JustName(szExename) <> "nwpopup.exe" Then ' anything other than this is suspect KillApp = True appCount = appCount + 1 myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID) ' here we want to make sure that we are NOT in 'grope'wise mail when we kill it If JustName(szExename) <> "groupwise.exe" And _ InStr(1, TopWindow, "groupwise", vbTextCompare) = 0 And _ InStr(1, TopWindow, "mail", vbTextCompare) = 0 Then AppKill = TerminateProcess(myProcess, exitCode) Call CloseHandle(myProcess) Else ' Its groupwise ' Just dont kill poopwise if its in the foreground End If ' Its not groupwise End If ' not nwpopoup End If ' contains novell rProcessFound = ProcessNext(hSnapshot, uProcess) Loop Call CloseHandle(hSnapshot) Finish: End Function
"If ye love wealth better than liberty, the tranquility of servitude better than the animated contest of freedom, go home from us in peace. We ask not your counsel or arms. Crouch down and lick the hands which feed you. May your chains set lightly upon you, and may posterity forget that ye were our countrymen."
~Samuel Adams