代码如下:
is_tongguo:=false;
//////////////////////////////
Frmjbb:=TFrmjbb.create(self);
Frmjbb.showmodal;
//创建窗口和显示窗口中改变is_tongguo的值,
//窗口显示1秒后自动关闭
///////////////////////////////
if is_tongguo then
zhiwenverify;问题:
没有完成如下
Frmjbb:=TFrmjbb.create(self);
Frmjbb.showmodal;
就运行了 if is_tongguo then
zhiwenverify所以Frmjbb:=TFrmjbb.create(self);
Frmjbb.showmodal;过程中改变的is_tongguo的值没法反映出来
请问如何解决?
is_tongguo:=false;
//////////////////////////////
Frmjbb:=TFrmjbb.create(self);
Frmjbb.showmodal;
//创建窗口和显示窗口中改变is_tongguo的值,
//窗口显示1秒后自动关闭
///////////////////////////////
if is_tongguo then
zhiwenverify;问题:
没有完成如下
Frmjbb:=TFrmjbb.create(self);
Frmjbb.showmodal;
就运行了 if is_tongguo then
zhiwenverify所以Frmjbb:=TFrmjbb.create(self);
Frmjbb.showmodal;过程中改变的is_tongguo的值没法反映出来
请问如何解决?
程序源码 :
首先定义以下变量
var sInfo : TStartupInfo;
pInfo : TProcessInformation;
cmdLine : String;
exitCode : Cardinal;
// 下面是调用过程
cmdLine := 'c:\winnt\notepad.exe';
FillChar(sInfo,sizeof(sInfo),#0);
sInfo.cb := SizeOf(sInfo);
sInfo.dwFlags := STARTF_USESHOWWINDOW;
sInfo.wShowWindow := SW_NORMAL;if not CreateProcess(nil,pchar(cmdLine),nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo) then
MessageBox(Application.handle,'指定程序启动失败!','错误',MB_OK or MB_ICONSTOP)
else
begin
WaitForSingleObject(pInfo.hProcess,INFINITE);
GetExitCodeProcess(pInfo.hProcess,exitCode);
end;程序讲解 :
最主要是两个Windows API : CreateProcess和WaitForSingleObject. CreateProcess是用来启动进程的函数, 进程启动后, 会填写TProcessInformation这个结构, 而WaitForSingleObject的作用就是等待指定句柄的进程结束或超时. 关于这两个API的参数请参考Win32的说明.