一个关于进程的简单问题(50分)

C

childe

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在想在一个子进程运行完成之后,让它自己正常退出;如果子进程退出出现没有响应情况,则在主进程中强行中止子进程并杀死子进程。
请问各位高手,如何实现?最好有实例源码。
 
以下是摘录,仅供参考!是成功代码!
获得进程列表,并终止 Excel 进程示例:
procedure TForm1.Button1Click(Sender: TObject);
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret : BOOL;
ProcessID : integer;
s:string;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
Memo1.clear;
while Ret do
begin
Memo1.lines.add(FProcessEntry32.szExeFile);
s:=ExtractFileName(FProcessEntry32.szExeFile);
if s='EXCEL.EXE' then
begin
ProcessID:=FProcessEntry32.th32ProcessID;
TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,ProcessID),1);
s:='';
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
 
谢谢。不好意思,我有一个初级问题:代码中的TProcessEntry32
Delphi不认识,好像要加载一个什么文件?请赐教。
 
还有,进程采用以下代码中止之后,我发现内存增长了,而且是在不断的增长,每次大约
增长8~12K。这对于一个长周期运行的程序来说可不是一个好信息。
不知道如何解决这种内存泄漏问题?请赐教。
比如窗口的标题为'Kill'.
var
h: HWnd;
begin
h:=FindWindow(nil, 'Kill');
if h<>0 then
SendMessage(h, WM_Close, 0, 0);
 
顶部