![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрытие процесса
GEN++ © (2006-11-01 15:15:00)Такая проблема:
Есть имя процесса надо его закрыть, как это можно зделать?
DVM (2006-11-01 18:19:00) [1]
function ProcessTerminate(dwPID: Cardinal): boolean;
var
hProcess: THandle;
begin
result := false;
hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, dwPID);
if hProcess = 0 then exit;
if not TerminateProcess(hProcess, DWORD(-1)) then
begin
CloseHandle(hProcess);
exit;
end;
CloseHandle(hProcess);
Result := true;
end;
DVM (2006-11-01 18:17:00) [2]
function KillTask(FileName: string): boolean;
var
ContinueLoop: BOOL;
SnapshotHandle: THandle;
ProcessEntry32: TProcessEntry32;
begin
result := false;
SnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
ProcessEntry32.dwSize := Sizeof(ProcessEntry32);
ContinueLoop := Process32First(SnapshotHandle, ProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(ProcessEntry32.szExeFile)) = UpperCase(FileName))
or (UpperCase(ProcessEntry32.szExeFile) = UpperCase(FileName))) then
begin
Result := ProcessTerminate(ProcessEntry32.th32ProcessID);
end;
ContinueLoop := Process32Next(SnapshotHandle, ProcessEntry32);
end;
CloseHandle(SnapshotHandle);
end;
Gero (2006-11-01 18:13:00) [3]> [14] GEN++ © (01.11.06 17:55)
TerminateProcess(Process, 0);
GEN++ (2006-11-01 17:55:00) [4]темнемение пример не помишает
Gero (2006-11-01 17:05:00) [5]> [11] GEN++ © (01.11.06 16:57)
Он завершает именно через TerminateProcess, не сомневайся.
Anatoly Podgoretsky (2006-11-01 17:02:00) [6]> GEN++ (01.11.2006 16:57:11) [11]
> Ctrl+alit+delete.
У тебя 9x
В XP это ничего не закрывает, а из диспетчера программ, уж как повезет может
и мгновенно, а может подождать придется довольно долго.
GEN++ (2006-11-01 16:57:00) [7]я уже пробовал у меня получается не то что мне нужно.
Мне необходимо быстро завершить процесс. Примерно так-же как через Ctrl+alit+delete. Чтобы процесс закрывался моментально.
Gero (2006-11-01 16:51:00) [8]> [9] GEN++ © (01.11.06 16:48)
А сам не хочешь попробовать сделать?
GEN++ (2006-11-01 16:48:00) [9]а можно пример?
Lamer@fools.ua (2006-11-01 16:43:00) [10]> Есть имя процесса надо его закрыть, как это можно зделать?
EnumProcesses (или Process32First + Process32Next) + TerminateProcess
Gero (2006-11-01 16:41:00) [11]TerminateProcess
Сергей М. (2006-11-01 16:20:00) [12]
> Он еще как хочет
Если уж так хочет, пусть сам по себе и завершается.
Зачем его подталкивать к смерти принудительно ? Чем это обосновано в твоем случае ?
Stanislav (2006-11-01 16:00:00) [13]Dmitrij_K (01.11.06 15:54) [4]
А если у него нет окна?
Dmitrij_K (2006-11-01 15:54:00) [14]что-то типа
SendMessage(FindWindow(nil,'Заголовок'),WM_CLOSE,0,0);
Jeer (2006-11-01 15:47:00) [15]
> как это можно зделать?
Процесс просто требует лучшего знания хотя бы русского языка.
GEN++ (2006-11-01 15:44:00) [16]Он еще как хочет но чтобы его закрыть надо его handler а как его можно по названию получить?
Сергей М. (2006-11-01 15:40:00) [17]А если процесс нехочет, чтобы его закрыли без ведома самого процесса ?