Hola,
Sólo apostillar que la respuesta que te han dado los compañeros es correcta.
He hecho pruebas con este código y funciona perfectamente:
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
Exe: String;
Params: String;
begin
if ListBox1.ItemIndex<0 then ListBox1.ItemIndex:=0;
Exe := 'C:\Archivos de programa\Adobe\Photoshop CS\PhotoShop.EXE';
Params := QuotedStr('"'+ListBox1.Items[ListBox1.ItemIndex]+'"');
ShellExecute(Handle, 'open', PChar(Exe), PChar(Params), nil, SW_SHOW);
end;
Observa la función QuotedStr, añade unas
comillas simples al resultado de unir unas
ComillasDobles + NombreFichero + ComillasDobles.
Si mi fichero es
C:\Documents and Setting\Rafita\Imagenes retocadas\Foto14.psd,
el parámetro que le pasas a ShellExecute es
'"C:\Documents and Setting\Rafita\Imagenes retocadas\Foto14.psd"'
Creo que el amigo HemSoft se había enterado con el post de Roman, pero por si acaso, añado esto.
Un saludo,