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 :

[D2010] Comment lancer un exe avec CreateProcess sans ID processus père ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut [D2010] Comment lancer un exe avec CreateProcess sans ID processus père ?
    Comment lancer un exe avec CreateProcess qui soit sans ID processus père (enfin pas celui de l'exe appelant) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       ZeroMemory(@StartupInfo, Sizeof(StartupInfo));
       StartupInfo.cb := Sizeof(StartupInfo);
       StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
       StartupInfo.wShowWindow := SW_SHOWNORMAL;
       if CreateProcess(PChar('C:\Documents and Settings\moi\Bureau\App test\Project2.exe'), nil, nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then
       begin
     
          ...
     
             Application.Terminate;
          end;
       end;

    Après avoir lancé cet exe (et fait 2 ~ 3 choses), mon application appelante se ferme.
    Mon problème, c'est qu'il reste une fenêtre fantôme de mon application appelante jusqu'à ce que le deuxième exe soit fermé. J'en ai déduit que c'était le lien avec le processus père qui faisait ça.

    Nom : Fenêtre fantôme.JPG
Affichages : 214
Taille : 14,6 Ko

    Comment rendre l'exe lancé réellement autonome ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pourquoi n'utilises tu pas ShellExecute ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Pourquoi n'utilises tu pas ShellExecute ?
    C'est ce que j'ai fini par faire, mais ça m'a obligé à rajouter deux recherches du PID.
    Je ne pensais pas que CreateProcess avait cette contrainte ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Est-ce que CreateProcess était lancé depuis un thread secondaire ? Ça pourrait expliquer le lock de l'affichage sur Application.Terminate.

    Pourquoi as-tu besoin du PID ?

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Est-ce que CreateProcess était lancé depuis un thread secondaire ? Ça pourrait expliquer le lock de l'affichage sur Application.Terminate.
    Non, c'est un simple exe avec juste une fenêtre principale.

    Citation Envoyé par Andnotor Voir le message
    Pourquoi as-tu besoin du PID ?
    Pour chercher le bouton et cliquer dessus. C'est bien sale, mais c'est un exe de correction de données en masse (à usage unique). Donc, j'ai pas fignolé. Je me disais que c'était le plus rapide, mais maintenant je me dis que j'aurais pu faire bien plus simple.

    En tout cas, avec le ShellExecute et les recherche du PID, ça marche bien.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

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

Discussions similaires

  1. [Débutant] Comment lancer un exe avec un autre utilisateur que Système
    Par Amelie_sc dans le forum C#
    Réponses: 6
    Dernier message: 04/07/2013, 12h24
  2. cygwin bash - comment lancer un script avec bash.exe
    Par noooop dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 24/12/2009, 11h34
  3. comment lancer un exe avec parametre avec shell
    Par niceen dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/05/2008, 19h56
  4. Réponses: 1
    Dernier message: 16/01/2006, 20h15
  5. [Flash MX2004] Lancer un *.exe avec fscommand
    Par pioup dans le forum Flash
    Réponses: 7
    Dernier message: 30/07/2004, 16h28

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