Вот от сюда и берётся: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/process_information_str.asp то есть hProcess в структуре PROCESS_INFORMATION
CreateToolhelp32Snapshot Process32First OpenProcess TerminateProcess CloseHandle Process32Next CloseHandle
Почему-то не работает. Код (Text): char *szExName = "explorer.exe" HANDLE hSnap; hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 proc; if (Process32First(hSnap, &proc)) { while (Process32Next(hSnap, &proc)) { if (strcmp(csExName,proc.szExeFile)) { HANDLE ProcessHandle=NULL; ProcessHandle = OpenProcess(SYNCHRONIZE,TRUE, proc.th32ProcessID); if (ProcessHandle!=NULL) { TerminateProcess(ProcessHandle,0); CloseHandle(ProcessHandle); } } } } CloseHandle(hSnap);
НО! Если стоит файер, просо так убить процесс он тебе не даст! ) Второе. Если нет соответствующих привелегий, некоторые процессы (системные) ты даже не откроешь(хотя откроешь, но только на чтение). Третье. У меня валяется функция "int:GetPIDbyImageName(lpImageName);" Если нужна, могу скинуть.
Код (Text): if (strcmp(csExName,proc.szExeFile)) { HANDLE ProcessHandle=NULL; ProcessHandle = OpenProcess(SYNCHRONIZE,TRUE, proc.th32ProcessID); if (ProcessHandle!=NULL) Код (Text): if (strcmp(csExName,proc.szExeFile) == 0) { HANDLE ProcessHandle=NULL; ProcessHandle = OpenProcess(PROCESS_TERMINATE,TRUE, proc.th32ProcessID); if (ProcessHandle!=NULL)
Вообще, поюзай NtQuerySystemInformation (Набей в поисковике, результат гарантирован). Ты получишь огромный массив инфы, начиная от нужных Handle и кончая различными данными, которые можешь увидеть в стандартном TaskManager. А без админских пивилегий, никто никогда завершить системный или админский процесс не даст. Кстати, в .NET есть специальный класс TProcess (обертка для всё той же NtQuerySystemInformation) для получения инфы о процесах, в который также включены такие фишки как зарубить, закрыть, получить инфу о модулях и т.д.