Come posso eseguire l'equivalente di ShellExecute () in Lazarus per un Mac?
Domanda
Come posso eseguire l'equivalente di shellexecute()
in Lazarus per un Mac?
Soluzione
{Ecco il codice per farlo. Utilizzare l'oggetto TProcess! }
uses Process;
...
procedure DoProcess;
Var
Proc : TProcess;
Begin
Proc := TProcess.Create(nil);
try
Proc.CommandLine := '/Applications/MyApp.app';
PRoc.Options := Proc.Options + [poWaitOnExit];
Proc.CommandLine := Proc.CommandLine + ' -someparam';
PRoc.Execute;
finally
Proc.free;
end;
End;
Altri suggerimenti
Non so se le librerie di Lazzaro si dispone già di questa funzionalità avvolto, ma se non si potrebbe scrivere una versione compilata di condizionale ShellExecute () utilizzando le informazioni nel Launch Services Programmazione Guida
Se si desidera utilizzare ShellExecute per aprire un documento con la sua applicazione preferita, quindi è possibile utilizzare la procedura OpenDocument dall'unità LCLIntf.
Lo strumento di conversione Lazarus usa anche questa sostituzione per ShellExecute, vedere la Lazzaro wiki . Internamente utilizza aperta come detto da ruba.
Shell('open ' + Filename)
Ho usato con successo in OS X 10.4 e 10.3, che sembra funzionare piuttosto bene per la maggior parte tipi di file.
mi sono imbattuto open
al prompt della shell e ora manca in cygwin / linux etc.
forchetta fa male su Mac. BSD usano vfork, non forcella.