Asi quedo el codigo final:
Código Delphi
[-]procedure TForm1.btnReproducirClick(Sender: TObject);
var
St : array[0..255] of char;
NumProceso:Cardinal;
begin
With lvLista do
begin
i:=0;
While i < Items.Count do
begin
if lvLista.Items[i].Checked then
begin
Application.Minimize;
NumProceso:=ejecutarProceso('"C:\Program Files (x86)\KaraFun\KaraFun.exe" "'+Items.Item[i].SubItems.Strings[1]+'"');
if NumProceso<>0 then
WaitForSingleObject(numProceso,INFINITE);
Application.Restore;
end;
inc(i);
end;
end;
end;
Con la funcion modificada que propuso neftali
Código Delphi
[-]function ejecutarProceso (nombreProceso : string) : Cardinal;
var
infoInicio : TStartupInfo;
infoProceso : TProcessInformation;
begin
Result := 0;
FillChar (infoInicio, SizeOf(infoInicio), 0);
infoInicio.cb := SizeOf(infoInicio);
if CreateProcess(nil, PChar(nombreProceso),
nil, nil, false, 0, nil, nil,
infoInicio, infoProceso) then
Result := infoProceso.hProcess;
end;