Удаление процессов
Два примера , показывающие как можно килять процессы.
Платформа: 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