Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизВопрос: Как убить процесс? Найти похожие ветки
← →
Yanis (2003-05-28 21:34) [0]Мне известно имя процесса(по Диспечеру задач), процесс невидимый.
Собственно сам вопрос: Как убить этот самый процесс(убивать нада приблизительно раз в 2 минуты), у которого мне известно только имя?
Буду признателен всем кто примет любое участие в данном топике. Спасибо.
← →
Holy (2003-05-28 21:50) [1]TerminateProcess() по-моему...., но сначала получить список процессов.
← →
jack128 (2003-05-28 21:56) [2]procedure TForm1.Button1Click(Sender: TObject);
var th : THandle;
pi : TProcessENTRY32;
ph : THAndle;
begin
th := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
pi.dwSize := SizeOf(pi);
if (th <> invalid_handle_value) and Process32First(th,pi) then begin
repeat
if pi.szExeFile = <твое имя> then
begin
ph := OpenProcess(PROCESS_TERMINATE,false,pi.th32ProcessID);
if ph <> INVALID_HANDLE_VALUE then
begin
TerminateProcess(ph,0);
CloseHandle(ph) ;
end;
Break;
end;
until not Process32Next(th,pi);
CloseHandle(th);
end;
end;
← →
Yanis (2003-05-28 21:58) [3]А где про эту функцию написано? В WinXP не получается получить список всех процессов, т.е. скрытые не видно, как получить список всех процессов, а потом убить нужный?
← →
Holy (2003-05-28 22:02) [4]msdn.microsoft.com но можно и MAPI от делфей.
← →
default (2003-05-28 22:11) [5]см. раздел Tool Help Functions файла 95GUIDE.HLP
он в поставку Delphi входит
там про это всё написано
← →
Yanis (2003-05-29 09:15) [6]To jack128 ©
var th : THandle;_________________________________?
pi : TProcessENTRY32;__________________________?
ph : THAndle;__________________________________?
CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);_______?
← →
DVM (2003-05-29 09:34) [7]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/terminateprocess.asp
← →
Yanis (2003-05-29 13:13) [8]Спасибо большое всем кто хотя бы пытался мне помочь!!!!!!!!!!!!!
Я нашел решение проблемы убить процесс зная только его имя(которое можно посмотреть в Диспечере задач), если кому интересно вот код:
unit UProcessKiller;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Tlhelp32,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
function KillTask(ExeFileName: string): integer;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ TForm1 }
function TForm1.KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.KillTask("NOTEPAD.EXE");
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c