Запуск двух программ с ожиданием завершения поднимал тему здесь, написал рабочий код по примерам. Опять же повторюсь, я не программист, работаю в совсем другой сфере ИТ. Просьба глянуть и оценить, что требуется исправить убрать.
Код:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Winapi.Windows,
shellapi;
var
STI: TStartUpInfo;
App, Param, RunLine:String;
App2, Param2, RunLine2:String;
PI: TProcessInformation;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
begin
//FillChar(STI, SizeOf(TStartUpInfo), #0);
//FillChar(STI, SizeOf(TProcessInformation), #0);
STI.cb := SizeOf(TStartupInfo);
STI.dwFlags := CREATE_NO_WINDOW;
STI.wShowWindow := SW_Show;
App:='C:\Windows\System32\cmd.exe';
Param:='/?';
RunLine:=Format('"%s" %s', [App, Param]);
App2:='C:\Windows\System32\calc.exe';
if CreateProcess(Pointer(App), Pchar(RunLine), nil, nil, False, CREATE_NEW_CONSOLE OR NORMAL_PRIORITY_CLASS, nil, nil, STI, PI) then
begin
WaitForSingleObject(PI.hProcess, INFINITE);
//ShellExecute(0, 'open','calc.exe', nil, nil, 0);
CreateProcess(Pointer(App2), Pchar(app2), nil, nil, False, CREATE_NEW_CONSOLE OR NORMAL_PRIORITY_CLASS, nil, nil, STI, PI);
Exit;
end
else exit;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Вопросы:
1. При запуске видно окно программы лаунчера, как сделать, чтобы окошка приложения не было?
2. Для запуска второй программы, что лучше использовать CreateProcess или ShellExecute?
3. Какие параметры использовать, если требуется без оконный запуск приложений App, App2?
4. Pointer(App) ставить или просто в nil убрать?
5. Ну и сам код, насколько криво он написан, что требует редакции
