Domanda

Come posso eseguire l'equivalente di shellexecute() in Lazarus per un Mac?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top