Salut,
Ca sent très fort le
CreateProcess et le
WaitForSingleObject.
Tu peux même te débarasser de la parti batch si tu le souhaite, en mettant directement tes lignes de commande en deuxième parmètre de CreateProcess.
procedure TForm1.Button1Click(Sender: TObject);
var
processInfo: TProcessInformation;
startupInfo: TStartupInfo;
begin
ZeroMemory(@startupInfo, SizeOf(TStartupInfo));
startupInfo.cb:= SizeOf(TStartupInfo);
startupInfo.dwFlags:= STARTF_USESHOWWINDOW;
startupInfo.wShowWindow:= SW_HIDE;
if not CreateProcess(nil, 'c:\test.bat toto',
nil, nil, False, 0, nil, nil,
startupInfo, processInfo) then RaiseLastOSError;
WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
end;