![]() |
|
|
#1
|
|||
|
|||
![]() Просмотр запущенных процессов, и завершение по /PID. Аналог виндовозовских tasklist taskill. Что подскажете?
|
#2
|
||||
|
||||
![]() STFW:
Win9x - "tool help functions" WinNT - NtQuerySystemInformation |
#3
|
|||
|
|||
![]() Пример ниже убивает процесс по заданому имени
Код:
procedure ProcessTerminate(sName: string); var han : THandle; ProcStruct : PROCESSENTRY32; sID : string; begin han := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); if han = 0 then exit; ProcStruct.dwSize := sizeof(PROCESSENTRY32); if Process32First(han, ProcStruct) then begin repeat sID := ExtractFileName(ProcStruct.szExeFile); if UpperCase(copy(sId, 1, length(sName))) = uppercase(sName) then begin ProcessTerminate(ProcStruct.th32ProcessID); Break; end; until not Process32Next(han, ProcStruct); end; CloseHandle( han ); end; Caecus non indicat de colore http://www.proedd.com Последний раз редактировалось Admin, 24.09.2008 в 10:29. |
#4
|
|||
|
|||
![]() Цитата:
|
#5
|
|||
|
|||
![]() Цитата:
Вообще здесь в параметре процедуры, но этот пример не убьет процесс. Вот код, который найдет PID по имени. А дальше можно и "убить" процесс. Код:
function GetProcessPidByName(fName: String): THandle; var hSnapshot: THandle; function ProcessPidByName(hProcess: DWord; fName: String): THandle; var ProcEntry: TProcessEntry32; ProcessPid: THandle; begin ProcEntry.dwSize:= SizeOf(ProcEntry); ProcessPid:= 0; if Process32First(hProcess, ProcEntry) then begin repeat if ProcEntry.szExeFile = fName then begin ProcessPid:= ProcEntry.th32ProcessID; Result:= ProcessPid; Exit; end; until not Process32Next(hProcess, ProcEntry) end; Result:= ProcessPid; end; begin hSnapshot:= CreateToolhelp32Snapshot($2, 0); if hSnapshot <> INVALID_HANDLE_VALUE then Result:= ProcessPidByName(hSnapshot, fName); CloseHandle (hSnapShot); end; |