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

Visual C++ Discussion :

Récupérer sortie d'une fenêtre Telnet


Sujet :

Visual C++

  1. #1
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut Récupérer sortie d'une fenêtre Telnet
    Bonjour,

    Pour résumer le contexte, une application en visual C++ crée un process Telnet via la fonction CreateProcess et ensuite doit intérargir avec cette fenêtre. Notamment simuler l'appui de touche clavier pour lancer des commandes (open 'x' par exemple). Pour cela, on récupère dans un premier temps le handle sur la fenetre au travers la commande FindWindow(), puis on envoie les messages appropriés. Pas de problèmes particuliers pour cela.
    Le hic concerne la récupération du buffer de sortie de la fenêtre. C'est à dire, suite à l'éxécution d'une commande, je désirerais récupérer le texte affiché à l'écran (pourquoi pas avec le prompt). J'ai tenté la redirection vers un fichier texte mais il semblerait qu'à partir d'une fenêtre Telnet, cela n'est pas possible.

    Il y a t'il un moyen de récupérer toute les données présentes dans le buffer de sortie de ma fenêtre Telnet suite à une action de l'utilisateur? (un peu comme les fonctions rattachées à une console: GetConsoleScreenBufferInfo(), ReadConsoleOutputCharacter() ...).

    Nicolas

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux essayer en récupérent le handle du controle qui s'occupe d'afficher la sortie, s'il s'agit d'un edit c'est plutot simple.
    Tu peux le savoir grace à spy++

  3. #3
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Une idée comme cela:
    Peut être avec un pipe nommé ou anonyme (IPC que je n'ai d'ailleurs jamais utilisé...)?
    Je tâche de comprendre le mécanisme mais je ne vois pas comment je peux spécifier à l'application telnet précédemment créer de m'envoyer le contenu de son buffer de réception via le pipe...

    Il y a t'il cette option lors de la création du process avec CreateProcess()?

  4. #4
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    tu peux essayer en récupérent le handle du controle qui s'occupe d'afficher la sortie, s'il s'agit d'un edit c'est plutot simple.
    Tu peux le savoir grace à spy++
    Il s'agit de la fenêtre telnet (sous forme de fenêtre dos: exécuter->telnet.exe) donc pas de controle edit...

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux rediriger la sortie d'une commande (voir dans la faq), mais cela implique de ne pas avoir de saisie visuelle à faire

  6. #6
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    tu peux rediriger la sortie d'une commande (voir dans la faq), mais cela implique de ne pas avoir de saisie visuelle à faire
    Tiens, je n'avais jamais fait attention à cette partie dans la FAQ, je vais jeter un coup d'oeil, merci!

  7. #7
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    C'est embetant car en fait j'ai besoin de la saisie visuelle...

    En gros, Telnet est lancé via CreateProcess() puis l'opérateur lance une connexion à l'hote destiné (open "x"), puis saisie le login et le mot de passe etc...

    Pour chacune de ses opérations, j'aimerais récupérer le texte généré dans la console vers l'application qui a créé le process Telnet mais aussi l'afficher sur la console en même temps pour que l 'opérateur poursuive ses opérations.

  8. #8
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Concernant l'utilisation d'une solution avec les pipes, pourquoi ne pas en créer un dans un seul sens (pipe qui transmet uniquement la sortie de la console vers mon application).

    Je me suis penché sur la msdn pour comprendre les mécanismes mais je n'arrive pas à les appliquer dans mon cas de figures.

    Pourriez vous m'aider avec la procédure à suivre et/ou quelques bouts de codes pour illustrer?

Discussions similaires

  1. script pour simulé une fenêtre telnet
    Par aminelectronics dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 12/12/2010, 12h17
  2. Récupérer résultat d'une fenêtre DOS
    Par besly dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 07/11/2008, 14h45
  3. Récupérer informations d'une fenêtre
    Par masseur dans le forum C#
    Réponses: 5
    Dernier message: 03/10/2008, 16h11
  4. [C++] Récupérer fichier dans une fenêtre
    Par JulienDuSud dans le forum Windows
    Réponses: 2
    Dernier message: 14/09/2006, 12h46

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