C
chenzhihui
Unregistered / Unconfirmed
GUEST, unregistred user!
先举例描述我的问题:1.this.exe是我的主程序。upVersion.exe这个程序的作用呢是上传this.exe这个程序到数据库,我建了一个表用blob字段存放this.exe文件。2.PupVer.exe这个程序的作用是,主程序this.exe在运行的时候,使用PupVer.exe来去数据里看看,根据版本号判断有没有更新的程序需要下载。如有有更新的版本。下载覆盖this.exe3.在this.exe的program单元中调用PupVer.exe的代码如下。program PeriorMgr;uses Forms, SysUtils, Windows,IniFiles, configMgr in 'configMgr.pas' {FrmConfigMgr} .. ..;Var Fn : String; TSI : TStartupInfo; TPI : TProcessInformation; confile:TIniFile;{$R *.res}begin Fn:= ExtractFilePath(ParamStr(0))+'PupVer.exe'; FillChar(TSI, SizeOf(TSI), 0); TSI.CB := SizeOf(TSI); //函数只负责生成进程.而不关心执行了结果. (1) IF CreateProcess (PChar(Fn), NIL, NIL, NIL, False,DETACHED_PROCESS, NIL, NIL, TSI, TPI) THEN begin messagebeep(0); end ELSE Begin messagebeep(0); Application.MessageBox('不能完成文件拷贝.'+'请手工拷贝!.', 'Copy Error!',1); Exit; End; //this.exe的主程序 (2) Application.Initialize; Application.CreateForm(TFrmConfigMgr, FrmConfigMgr); Application.CreateForm(TFrmlogin, Frmlogin); Application.Run;end.我的初衷是PupVer.exe运行成功正确之后(应为用vpn连接数据库比较耗时)。也就是从库中下载到this.exe之后。然后this.exe再开始运行。看符号(1)和(2)处。我在调试的时候,发现(1)处的程序PupVer.exe运行之后,(2)处的程序this.exe也开始运行拉。而PupVer.exe运行比较耗时,它还没有更新this.exe成功。个人感觉(1)处 IF CreateProcess (PChar(Fn), NIL, NIL, NIL, False,DETACHED_PROCESS, NIL, NIL, TSI, TPI) THEN 函数只负责打开一个进程。进程正常打开了就算成功了。这个函数有没有其中一个参数返回?我可以在PupVer.exe工程中对他赋值,表示已成功,让函数返回这个值。还有什么其他的方法。也就是想实现PupVer.exe先下载。下载成功以后拉。this.exe在执行。。应为Application.Initialize还没有初始化,这样运行的就是新的程序。渴望大鸟们指点一下。送100分。有源代码最好不过了。