delphi 如何先关闭掉主程序再运行另外一个程序? 25

情况如下:运行主程序时,发现有更新信息,于是就先关闭主程序,然后打开update.exe程序,冲突的是,主程序还没有完全退出,一些dll还没有释放,更新程序已经将一些dl... 情况如下:运行主程序时,发现有更新信息,于是就先关闭主程序,然后打开update.exe程序,冲突的是,主程序还没有完全退出,一些dll还没有释放,更新程序已经将一些dll文件更新下来,产生文件共享冲突,无法更新?请高手指点,qq,杀毒软件是如何做到更新的? 展开
 我来答
李白韩信杜甫
2012-06-25 · TA获得超过1340个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:342万
展开全部
打开update.exe后先判断主程序是否在运行(或者先等待几秒),若有给出提示,稍作等待再进行更新程序,如此反复,直至可以更新时才更新。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晏伟根大河
2012-06-24 · TA获得超过614个赞
知道小有建树答主
回答量:805
采纳率:0%
帮助的人:498万
展开全部
//* 函数功能:执行程序至完成
//* 函数名称: WaitExeFinish
//****************************************************
function WaitExeFinish(const sExeName: String): Boolean;
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
strExeName: String;
begin
Result:= True;
strExeName:= sExeName;
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
CreateProcess(nil, PChar(strExeName), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo);
with ProcessInfo do
begin
CloseHandle(hThread);
WaitForSingleObject(hProcess, INFINITE);
CloseHandle(hProcess);
end;
end;

调用方法

WaitExeFinish('01.bat');
WaitExeFinish('02.bat');
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
last_wolf1860
2012-06-25 · TA获得超过640个赞
知道小有建树答主
回答量:482
采纳率:100%
帮助的人:348万
展开全部
加载的DLL,手工释放,完成后,再执行Application.terminate,Sleep(100),再ShellExecute另一个程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
太平洋来的风
2012-06-24 · TA获得超过190个赞
知道小有建树答主
回答量:582
采纳率:100%
帮助的人:249万
展开全部
只能编著一个程序.
先让主程序退出.,不行强行kill掉然后检测自己的dll是否已经 regsvr 然后再去调用 update.exe
追问
如何实现啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lin257257
2012-06-25 · TA获得超过424个赞
知道小有建树答主
回答量:331
采纳率:100%
帮助的人:178万
展开全部
去找找杀进程的代码啊,直接在update里面先把进程杀掉不 就ok了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式