这是我的 LaunchApp('isql -U'+UserName+' -P'+PassWord+' -S'+Trim(SerName)+' -d'+Trim(DBName) +' -iDBUser.sql'+' -oError.txt -n ','',False,True); //执行处部可执行文件 Function LaunchApp(pExePath,WorkDir:String;ShowWindow,WaitFlag:Boolean):Boolean; var ExePath : array[0..512] of char; StartupInfo:TStartupInfo; ProcessInfo:TProcessInformation; begin StrPCopy(exePath, pExePath); FillChar(StartupInfo,Sizeof(StartupInfo),#0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; if ShowWindow then StartupInfo.wShowWindow := 1 else StartupInfo.wShowWindow := 0; if not CreateProcess(nil, ExePath, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then begin Result:=False; Exit; end else begin if WaitFlag then while WaitforSingleObject(ProcessInfo.hProcess,1000)=WAIT_TIMEOUT do begin Application.ProcessMessages; end; //WaitforSingleObject(ProcessInfo.hProcess,INFINITE); Result:=True; end; end;
LaunchApp('isql -U'+UserName+' -P'+PassWord+' -S'+Trim(SerName)+' -d'+Trim(DBName)
+' -iDBUser.sql'+' -oError.txt -n ','',False,True);
//执行处部可执行文件
Function LaunchApp(pExePath,WorkDir:String;ShowWindow,WaitFlag:Boolean):Boolean;
var ExePath : array[0..512] of char;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(exePath, pExePath);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
if ShowWindow then
StartupInfo.wShowWindow := 1
else
StartupInfo.wShowWindow := 0;
if not CreateProcess(nil,
ExePath,
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo) then begin
Result:=False;
Exit;
end else begin
if WaitFlag then
while WaitforSingleObject(ProcessInfo.hProcess,1000)=WAIT_TIMEOUT do begin
Application.ProcessMessages;
end;
//WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
Result:=True;
end;
end;