Anderer Ansatz und funktioniert! Aber die Beschreibung zu CreateProcess auf
MSDN ist mal total grottig. Da steht das der 1.Paramter den Applikationspfad enthalten soll und der 2.Parameter die Kommandozeile (Übergabeparameter für die Anwendung). Wenn man sich daran hält funktioniert mal garnichts. 1. Parameter auf nil --> autom. wird die Kommandozeile genutzt (das steht aber auch nciht explizit dort) 2.Paramter Anwendungspfad und Übergabeparameter angeben. Wie unten zwar schwer ersichtlich aber erfolgt ist
Delphi-Quellcode:
var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
begin
FillChar(si, SizeOf(si), Chr(0));
si.cb:=sizeof(si);
FillChar(pi, SizeOf(pi), Chr(0));
CreateProcess(
nil, PChar(GetCurrentDir+'
\7za.exe e -o"'+TempDownloadDir+
IP+'
" "'+TempDownloadDir+
IP+'
\'+Form1.ListBox3.Items[i]+'
"'),
nil,
nil, FALSE, 0,
nil,
nil, si, pi);
WaitForSingleObject(pi.hProcess, infinite)=WAIT_TIMEOUT;
DeleteFile(TempDownloadDir+
IP+'
\'+Form1.ListBox3.Items[i]);
end;