7 votes

Comment puis-je exécuter l'équivalent de shellexecute() dans Lazarus pour un Mac ?

Comment puis-je réaliser l'équivalent de shellexecute() dans Lazarus pour un Mac ?

8voto

{Voici le code pour le faire. Utilisez l'objet 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;

3voto

mghie Points 25960

Je ne sais pas si les bibliothèques Lazarus ont déjà cette fonctionnalité, mais si ce n'est pas le cas, vous pourriez écrire une version compilée conditionnellement de ShellExecute() en utilisant les informations contenues dans le Guide de programmation des services de lancement .

3voto

Vincent Snijders Points 111

Si vous souhaitez utiliser ShellExecute pour ouvrir un document avec son application préférée, vous pouvez alors utiliser la procédure OpenDocument de l'unité LCLIntf.

L'outil de conversion de Lazarus utilise également ce remplacement pour ShellExecute, voir l'onglet Lazare wiki . En interne, il utilise l'ouverture comme mentionné par RobS.

0voto

jozxyqk Points 183

J'ai utilisé avec succès Shell('open ' + Filename) dans OS X 10.4 et 10.3 qui semble fonctionner plutôt bien pour la plupart des types de fichiers.

Je suis tombé sur open à l'invite du shell et le manque maintenant dans cygwin/linux etc.

0voto

La fourche fait mal sur Mac. Les BSD utilisent vfork, pas fork.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X