7. 如何终止进程的运行?
(1) 使主线程的进入点函数返回(最好使用这个方法)。
这是保证所有线程资源能够得到正确清除的唯一办法。
让主线程的进入点函数返回,可以确保下列操作的实现:
•该线程创建的任何C++对象将能使用它们的析构函数正确地撤消。
•操作系统将能正确地释放该线程的堆栈使用的内存。
•系统将进程退出代码(在进程的内核对象中维护)设为进入点函数返回值。
•系统将进程内核对象的使用计数递减1。
(2) 进程中的一个线程调用ExitProcess函数(应该避免使用这种方法)。
显式调用ExitProcess和ExitThread是程序不能正确将自己清除的常见原因。调用ExitThread时,进程将继续运行,但可能会泄漏内存或其他资源。
(3) 另一个进程中的线程调用TerminateProcess函数(应该避免使用这种方法)。
只有当无法用另一种方法来迫使进程退出时,才应该使用TerminateProcess。
(4) 进程中的所有线程自行终止运行(这种情况几乎从未发生)。
如果进程中的所有线程全部终止运行,操作系统就认为没有理由继续保留进程的地址空间。
一旦进程终止运行(无论采用何种方法),系统将确保该进程不会将它的任何部分遗留下来。绝对没有办法知道该进程是否曾经运行过。进程一旦终止运行,它绝对不会留下任何蛛丝马迹。
(1) 使主线程的进入点函数返回(最好使用这个方法)。
这是保证所有线程资源能够得到正确清除的唯一办法。
让主线程的进入点函数返回,可以确保下列操作的实现:
•该线程创建的任何C++对象将能使用它们的析构函数正确地撤消。
•操作系统将能正确地释放该线程的堆栈使用的内存。
•系统将进程退出代码(在进程的内核对象中维护)设为进入点函数返回值。
•系统将进程内核对象的使用计数递减1。
(2) 进程中的一个线程调用ExitProcess函数(应该避免使用这种方法)。
显式调用ExitProcess和ExitThread是程序不能正确将自己清除的常见原因。调用ExitThread时,进程将继续运行,但可能会泄漏内存或其他资源。
(3) 另一个进程中的线程调用TerminateProcess函数(应该避免使用这种方法)。
只有当无法用另一种方法来迫使进程退出时,才应该使用TerminateProcess。
(4) 进程中的所有线程自行终止运行(这种情况几乎从未发生)。
如果进程中的所有线程全部终止运行,操作系统就认为没有理由继续保留进程的地址空间。
一旦进程终止运行(无论采用何种方法),系统将确保该进程不会将它的任何部分遗留下来。绝对没有办法知道该进程是否曾经运行过。进程一旦终止运行,它绝对不会留下任何蛛丝马迹。
tlhelp32;
procedure TForm1.Button1Click(Sender: TObject); function 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;
end;
begin
killtask(edit1.text);
end;
其中edit1.text的内容就是已知进程名
你在窗体上放一个BUTTON
放一个EDIT
把这段代码放进BUTTON。ONCLICK里
这就是例子呀