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

 Delphi Discussion :

Problème Application Externe


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut Problème Application Externe
    Bonjour,

    J'ai une question relative à une application externe.

    Dans 1 dossier, j'ai 2 exécutables : 1 principale (Main.exe) et 1 secondaire (Bis.exe). Main.exe lance Bis.exe. Si on clique sur Bis.exe, cela renvoie une erreur en disant que le programme ne peut être lancé que par l'intermédiaire de Main.exe.

    Comment faire cela ?

    Merci de votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut Version Delphi !
    Bonjour à toutes et à tous,

    @ Vodkha, avec ton application 1 comment lances tu la 2 (le code), il me semble que l'appli2 est reliée par autre chôse qu'une simple commande d'exécution depuis l'application 1.

    @+,

    Cincap

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut
    Hello,

    J'utilise cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(Handle,'open',PChar(ExtractFilePath(Application.ExeName)+'Bis.exe'),nil,nil,SW_SHOW);
    J'attends vos news

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut C'est correct !
    @ Vodkha, le chemin est correct donc sur ta fiche 2, il y a dans le code une référence de la fiche 1.

    Vérifie si la fiche 1 ne se limite qu'à lancer la fiche2.

    @+,

    Cincap

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    il y a des dizaine je crois, je connais que 2 ou 3
    1-utilise les sockets (main comme serveur et bas comme client);
    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    hand:THandle;
    ....   
        hand:=findwindow('TApplication',NomApplic);
         if hand=0 then  Halt;
         end;
    3-on passant par base de registres
    4-on utilisant un fichier: ce fichier sera ouver par main on exclusivité et base essaye de le renommer ou de l'ouvrir par example, si il a réussi c'est que main n'est pas exécuté
    ....

    mais pour moi je préfére les sockets

  6. #6
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Tu lance "Bis.exe" avec un paramètre depuis Main.exe

    Dans Bis.exe, Au lancement de l'appli tu teste ce paramètre. Si il est présent, c'est que c'est "Main.exe" qui l'a lancé donc tu continu l'exécution. Sinon, c'est que le programme a été lancé directement et tu ferme l'application.

    Bon, évidemment tu pourra toujours lancer en ligne de commande encore faut t'il connaitre le paramètre.

    Mais c'est une solution très simple a mettre en oeuvre:
    - le shellexecute à changer dans Main.exe (tu ajoute un paramètre)
    - un test à ajouter dans Bis.exe)

    Tu t'en sort en quelques lignes de codes...


    Si tu veux améliorer un peu, tu peux passer le Handle de la fenêtre principale de "Main.exe" en paramètre, puis tester avec FindWindows dans "Bis.exe" que ce Handle correspond bien à Main.exe.

    .

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,
    La solution de Sat83 est la plus simple à mettre en œuvre.
    En faite le problème revient à transmettre une autorisation à l'exécutable, c'est à dire des données.

    Dans tous les cas les données peuvent être fournis lors de l'appelle du programme (paramètre comme le sugère sat83.

    Une source externe que l'application vas consulter (fichier ini, base de donné etc.) peut fair l'affaire (le lanceur créer un fichier codé contenant la date et l'heure, et le lancé vérifie en fonction de ce fichier s'il peut être lancer (dans les 30 secondes a partire de l'heure marqué par exemple)).
    Un lien entre les 2 applications peut être utiliser (le lanceur et le lancer communiquant aprés que Bis.exe ai été lancé).
    Si bis peut être piloter via OLE, un ordre d'acceptation du lancement peut luis être comuniqué par le lanceur, faute de quoi il s'arrête dans les n secondes (l'application Bis doit donc etre lancer via OLE) .

    De nombreuse solutions peuvent être imaginé, le problème c'est qu'a part les paramètres, elle sont souvent compliqué et alourdissent le code.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut
    La solution du paramètre me suffit. je viens de tester c'est tout bon

    Merci de votre aide

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

Discussions similaires

  1. [D2010]Problème lancement application externe
    Par tokazio dans le forum Langage
    Réponses: 7
    Dernier message: 28/08/2012, 15h13
  2. Problème lancement d'une application externe
    Par cl@ndestIno dans le forum C#
    Réponses: 3
    Dernier message: 19/02/2009, 17h51
  3. Les Triggers et application externes
    Par Rahustro dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 16/02/2005, 13h53
  4. Appel application externe
    Par gerald2545 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 28/01/2005, 18h54
  5. problème variable extern
    Par HeKaz dans le forum C
    Réponses: 14
    Dernier message: 08/01/2003, 01h44

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