如果两个进程都是你的好办一些!
B程序:
Var
_immdone:boolean=false;//全局变量
Procedure TForm1.Button1Click;
Begin
WinExec(A程序+' '+IntToStr(Application.MainForm.Handle),SW_NORMAL);
End;
Procedure TForm1.Button2Click;{退出B程序的按钮}
Begin
_immdone:=true;
close;
End;
Procedure TForm1.FormClose;{关闭事件}
var
tmfl:file;
_id:dword;
begin
caFree:=True;
if (_immdone) then exit;
caFree:=False;
//否则是A发来的信息,读A的进程ID
assignfile(tmfl,'c:/a.id');
reset(tmfl,1);
blockread(tmfl,_id,sizeof(dword));
closefile(tmfl);
TerminateProcess(OpenProcess(PROCESS_TERMINATE,True,_id),0);//结束A进程。
Sleep(2001);{稍等2秒}
Button1Click(Nil);//再次执行A程序
end;
A程序:
Procedure TForm1.FormCreate;{事件}
var
tmfl:file;
_id:dword;
begin
//把A的进程ID保存待用
assignfile(tmfl,'c:/a.id');
rewrite(tmfl,1);
_id:=getcurrentprocessid();
blockwrite(tmfl,_id,sizeof(dword));
closefile(tmfl);
end;
Procedure TForm1.Button1Click;{给B程序发送请求关闭A程序的信息}
Begin
sendmessage(strtoint(paramstr(1)),wm_close,0,0);
End;