Удаление процессов

Два примера , показывающие как можно килять процессы.

Платформа: Windows
Автор: electrik

По имени процесса:

#INCLUDE "windows.bi"
#INCLUDE "win/tlhelp32.bi"
#DEFINE TOKEN_QUERY_TOKEN_ADJUST_PRIVILEGES &h20
Dim As TOKEN_PRIVILEGES Privileges  
Dim As LUID   pLocalId
Dim As handle phToken
Dim As handle hSnapshot
Dim As PROCESSENTRY32 prcs  
Dim As Zstring * 12 PrcList = "notepad.exe"
Dim As Zstring * 17 Privilege = "SeDebugPrivilege"

OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY_TOKEN_ADJUST_PRIVILEGES,@phToken)
LookupPrivilegeValue(0,Privilege ,@pLocalId)
privileges.PrivilegeCount = 1
         Privileges.Privileges(0).Attributes = 2
AdjustTokenPrivileges(@phToken,0,@privileges,0,0,0)
prcs.dwSize = Sizeof(PROCESSENTRY32)
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
Process32First(hSnapshot,@prcs)
Do
If(Instr(prcs.szExeFile, PrcList)) Then
TerminateProcess(OpenProcess(PROCESS_TERMINATE,0,prcs.th32ProcessID),0)
Print "process is killed"
End If
Loop While Process32Next(hSnapshot,@prcs)


С поиском окна по заголовку:

#INCLUDE "windows.bi"
Dim hProc As HANDLE
Dim procId As dword
Dim ErrId As dword
Dim MyError As Zstring * 1024
GetWindowThreadProcessId (FindWindow ("Notepad", 0),@procId)
hProc = OpenProcess(PROCESS_TERMINATE, FALSE, procId)
If hProc Then
    If TerminateProcess(hProc, -1) Then
        MessageBox (0, "Процесс  успешно убит.", "prockill", MB_OK Or MB_TASKMODAL)
    Else
        ErrId = GetLastError()
        FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0,ErrId,0,MyError,1023,0)
        MessageBox (0, "Не удалось убить процесс: "+MyError+".", "prockill Ошибка", MB_OK Or MB_TASKMODAL)
    End If
Else
    MessageBox (0, "Не удалось убить процесс: Процессы не обнаружены.", "prockill Ошибка", MB_OK Or MB_TASKMODAL)
End If