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 :

Dialogue entre applications


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 458
    Par défaut Dialogue entre applications
    Bonjour,

    Je voudrais ré-écrire avec Delphi, un vieil interface graphique pour windows qui pilote une application en mode console.
    Je n'ai qu'une doc limitée et incomplète des commande à envoyer au programme console.
    Comment puis-je faire pour intercepter les commandes envoyées par l'utilitaire graphique et les renvoyer vers l'appli console, les retours dans l'autre sens ne sont que des acquittements et ne m'interressent pas pour l'instant au moins.
    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    "Pilote" c'est vague
    Est-ce via ?
    - ligne de commande *
    - des Pipes assimilable à l'entrée sortie classique mode texte *
    - FileMapping partagé avec un échange de signaux (sémaphore / event)
    - TCP/IP local
    - SendMessage (est-ce une vrai application console ? GlobalAddAtom)

    * ces deux là, suffit de faire un programme avec le même nom et appeler le programme console renommé ou dans un autre répertoire
    Les deux sont simples à capturer et relayer
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 458
    Par défaut
    Effectivement il manquait une info :

    Le dialogue se fait en ligne de commande ou je pense par les pipes assimilables à l'entrée sortie en mode texte effectivement.
    Pour la première commande j'ai cloné (au seul sens du nom de l'appli) l'appli console et je recupère ainsi la première commande que je répercute avec un composant TDosCommande vers la vraie appli console et je peux même récupérer la réponse.
    Mais ensuite je ne sais pas comment faire pour récupérer les autres commandes qui vont suivre et assurer les retours vers l'appli interface graphique.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Regarde ce sujet c'est la lecture des Pipes, tu dois pouvoir y greffer l'écriture dans TSLTShellExecuteWrapper.CallCmd sur hWritePipeInput.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 542
    Billets dans le blog
    10
    Par défaut
    Regarde aussi du coté des application CGI avec le serveur internet microsoft. Un CGI n'est rien dautre qu'un EXE DOS qui communique avec le serveur via les canaux d'entrée/sortie matérialisés par les signes < et > dans les commandes MS DOS

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    quand je dois analyser des échanges entre applications je fini toujours par faire deux fois le boulot, dans ton cas:

    1) une appli qui pilote l'appli console

    2) une appli console qui sera piloter par la veille interface

    ça te permet de savoir exactement ce qui se passe des deux côtés.

    ça peut aussi prendre l'aspect d'un proxy, à savoir une appli console qui va recevoir des commandes de l'ancienne appli, les afficher, puis les envoyer à l'appli console d'origine, afficher son retour et le retourner à l'appli.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Le sujet m'intéresse. J'ai plusieurs fois travaillé dessus, avec plus ou moins de succès. J'avais trouvé un programme en C qui fait cela et qui fonctionne très bien. J'avais essayé de le traduire en Pascal mais ma traduction n'a jamais fonctionné. Voir cette discussion.

    Ensuite j'ai fait un autre essai en partant sur une base différente. Si je me souviens bien, ça fonctionnait mais pas très bien (c'était un peu lent). Voir cette discussion (la pièce jointe du dernier message).

    Mon problème était le même que le vôtre (si j'ai bien compris) : je voulais pouvoir espionner les échanges entre une application graphique (un jeu d'échecs) et son "moteur" qui est une application console. Je ne savais pas qu'on appelait cela un "proxy", mais ce que je cherchais à faire c'est exactement ce que Paul a décrit.

    Peut-on avoir accès aux applications en question, pour faire des essais ?

    P.-S. Il doit y avoir des applications déjà existantes pour faire cela mais la difficulté est de les trouver. Peut-être que je n'ai pas cherché avec les bons mots.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 458
    Par défaut
    Paul ton analyse est tout à fait exacte. C'est cela que je cherche à faire.
    Le besoin de Roland est à mon sens exactement le même.

    Perso je veux savoir exactement les commandes qu'envoie une appli graphique "ExifTooGui.exe" vers l'utilitaire bien connu "ExifTool.exe" que malgré une documentation assez touffue je n'arrive pas à piloter correctement dans certains cas via mon appli de gestion de photos.

  9. #9
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    J'ai trouvé ce projet, UCI Protocol Sniffer, que j'ai pu compiler (avec Visual Studio) et faire fonctionner sans problème.

    Je ne l'ai pas essayé avec ExifTool et ExifToolGUI, mais je crois que ça pourrait fonctionner.

    Je ne suis pas utilisateur d'ExifTool, mais si j'ai bien compris, il fonctionne exactement comme un moteur d'échecs. L'utilisateur entre des commandes successives au clavier, et le moteur répond quelque chose dans la console. Le GUI ne fait que prendre la place de l'utilisateur, en écrivant et en lisant dans la console. Est-ce que je me trompe ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/02/2015, 18h11
  2. Application multifiches, "dialogue entre les fiches"
    Par Tsukaasa dans le forum Delphi
    Réponses: 8
    Dernier message: 27/03/2007, 21h06
  3. [WIn32 et .Net] Dialogue entre deux applications
    Par jambono dans le forum C++/CLI
    Réponses: 4
    Dernier message: 23/10/2006, 17h25
  4. Envoi de caractères entre applications
    Par Le Mage dans le forum Windows
    Réponses: 5
    Dernier message: 05/08/2004, 16h17
  5. Réponses: 3
    Dernier message: 30/03/2004, 09h38

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