IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Quel est l'équivalent de ShellExecuteEx sur Mac


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    Par défaut Quel est l'équivalent de ShellExecuteEx sur Mac
    Bonjour à tous,
    J'utilise cette fonction ShellExecuteEx sous Windows pour lancer une autre application et attendre la fin de son exécution.
    Cela fonctionne très bien. Voir le code ci-joint.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    uses ShellAPI;
     
    function ShellExecute_AndWait(FileName: string; Params: string): bool;
    var
      exInfo: TShellExecuteInfo;
      Ph: DWORD;
    begin
     
      FillChar(exInfo, SizeOf(exInfo), 0);
      with exInfo do
      begin
        cbSize := SizeOf(exInfo);
        fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
        Wnd := GetActiveWindow();
        exInfo.lpVerb := 'open';
        exInfo.lpParameters := PChar(Params);
        lpFile := PChar(FileName);
        nShow := SW_SHOWNORMAL;
      end;
      if ShellExecuteEx(@exInfo) then
        Ph := exInfo.hProcess
      else
      begin
        ShowMessage(SysErrorMessage(GetLastError));
        Result := true;
        exit;
      end;
      while WaitForSingleObject(exInfo.hProcess, 50) <> WAIT_OBJECT_0 do
        Application.ProcessMessages;
      CloseHandle(Ph);
     
      Result := true;
     
    end;
    Je voudrai faire la même chose sur un Mac.
    J'ai trouvé ce code qui utilise une NSTask.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    private
    Task: NSTask;
     
     
    procedure TMainForm.Exec(FileName: PWideChar);
    begin
    Task := TNSTask.Wrap(TNSTask.Wrap(TNSTask.OCClass.alloc).init);
     
    Task.setLaunchPath(StrToNSStr(FileName));
     
    Task.launch;
    Task.waitUntilExit;    //This child process is supposed to keep running.
    end;
     
    procedure TMainForm.FormCreate(Sender: TObject);
    begin
    Task := nil;
    end;
     
    procedure TMainForm.FormDestroy(Sender: TObject);
    begin
    if (Task <> nil)
    then
    begin
    Task.release;
    Task := nil;
    end;
    end;
    Mais il ne fonctionne pas. La NSTask n'est pas reconnue avec Delphi 11 et 12.
    Savez-vous dans quelle unité elle est déclarée?
    Merci.

  2. #2
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Bonjour,

    Citation Envoyé par jbrg Voir le message
    Mais il ne fonctionne pas. La NSTask n'est pas reconnue avec Delphi 11 et 12.
    Savez-vous dans quelle unité elle est déclarée?
    Merci.
    Dans Macapi.Foundation ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    Par défaut
    Merci free07.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel est le meilleur livre sur le SQL ?
    Par Marc Lussac dans le forum Livres
    Réponses: 78
    Dernier message: 03/10/2019, 20h04
  2. Quel éditeur pour faire du PHP sur Mac
    Par naspy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/01/2016, 06h35
  3. Quel est l'quivalent du type Csharp base64Binary en Java ?
    Par Battosaiii dans le forum Java ME
    Réponses: 0
    Dernier message: 23/04/2010, 15h31
  4. où est /usr/local sur mac OSX server (10.4.10) ou quel est son équivalent?
    Par Khaled.Noordin dans le forum Développement OS X
    Réponses: 2
    Dernier message: 08/07/2007, 22h55
  5. Quel est votre livre préféré sur Java ?
    Par Ricky81 dans le forum Général Java
    Réponses: 138
    Dernier message: 25/11/2006, 03h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo