var ProcessInfo : PROCESS_INFORMATION ; StartupInfo : STARTUPINFO ; fillchar(StartupInfo, sizeof(StartupInfo),0); StartupInfo.cb := sizeof(StartupInfo) ; if(CreateProcess("c:\winnt\notepad.exe", nil, nil,nil,FALSE,0,nil, nil,@StartupInfo,@ProcessInfo)) then begin WaitForSingleObject(ProcessInfo.hProcess,INFINITE); CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end else MessageBox("The process could not be started...");
function RunWait(FileName: string; Visibility: Integer): THandle; var zAppName: array[0..512] of Char; zCurDir: array[0..255] of Char; WorkDir: string; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin try StrPCopy(zAppName, FileName); GetDir(0, WorkDir); StrPCopy(zCurDir, WorkDir); FillChar(StartupInfo, SizeOf(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Visibility; if not CreateProcess(nil, zAppName, nil, nil, false, Create_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then begin result := 0; Exit; end else begin WaitForSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, result); end; finally end; end;
var ProcessInfo : PROCESS_INFORMATION ;
StartupInfo : STARTUPINFO ;
fillchar(StartupInfo, sizeof(StartupInfo),0);
StartupInfo.cb := sizeof(StartupInfo) ;
if(CreateProcess("c:\winnt\notepad.exe", nil,
nil,nil,FALSE,0,nil,
nil,@StartupInfo,@ProcessInfo)) then
begin
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
end
else
MessageBox("The process could not be started...");
var
zAppName: array[0..512] of Char;
zCurDir: array[0..255] of Char;
WorkDir: string;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
try
StrPCopy(zAppName, FileName);
GetDir(0, WorkDir);
StrPCopy(zCurDir, WorkDir);
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil, zAppName, nil, nil, false, Create_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
begin
result := 0;
Exit;
end
else
begin
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, result);
end;
finally
end;
end;