思路1:
需要重启程序的时候,在onclose事件里面调用了一个批处理bat文件(AT 脚本);
然后在批处理文件里面加入适当延迟(比如2秒);通过批处理文件重新启动该程序;
思路2:
你另外写个小程序,用那个程序来启动你的程序
你的程序关闭时-》调用那个小程序
小程序启动你的程序(先判断程序是否已经关闭)
小程序自己关闭
在onclose里面
shellexecute(self.handle,nil,PChar('c:\小程序.exe'),nil,nil,sw_shownormal,',',');
小程序的代码
在formcreate里面
shellexecute(self.handle,nil,PChar('c:\你的程序.exe'),nil,nil,sw_shownormal,',',');
close;
思路3:
在退出前调用打开程序的语句,最简单
Application.Terminate;
winexec(Pchar(paramstr(0)), sw_show,',',');
做成函数:
procedure KillApplication(Restart: boolean,',',');
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
if Restart then
begin
GetStartupInfo(StartInfo,',',');
FillChar(ProcInfo, SizeOf(TProcessInformation), #0,',',');
CreateProcess(nil, GetCommandLine, nil, nil, False,
CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil,
PChar(StartDir), StartInfo, ProcInfo,',',');
end;
TerminateProcess(GetCurrentProcess, 1,',',');
关键字词: