Когда-то мне это удавалось (ещё во времена WinXP), но сейчас - что-то не срастается.
То-ли лыжи не едут, то-ли я... косорукий.
Мой не работающий код:
- Код: Выделить всё
- procedure RestartMyself(param: Utf8String);
 var
 ExeName, par: Utf16String;
 SI: TStartupInfoW;
 PI: TProcessInformation;
 begin
 FillChar(SI, SizeOf(SI), 0);
 FillChar(PI, SizeOf(PI), 0);
 SI.cb:=SizeOf(SI);
 SI.wShowWindow:= 1;
 ExeName:= FileNameToUtf16(GetExeFileName(@RestartMyself)) + #0;
 par:= Utf8Decode(param) + #0;
 //***TODO WHY DOESNT THIS WORK :(((((
 CreateProcessW(PUcs2Char(ExeName), PUcs2Char(par)
 , Nil, Nil, false, $20, Nil, Nil, @SI, @PI);
 //**** STILL DOESNT *** F FF Fff*** WORK
 WaitForInputIdle(PI.hProcess, 10000); // because halting without waiting
 // for it to really start causes it to not start at all
 halt(0);
 end;
Пытался дебажить, вставляя MessageBoxW - в переменных правильные значения D:\chentrah\chentrah.exe и --restart
И тишинаааа...





