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

Windows Discussion :

Récupérer le texte d'une fenêtre (Question très − trop ? − générale d'un « ignorant »)


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut Récupérer le texte d'une fenêtre (Question très − trop ? − générale d'un « ignorant »)
    Bonjour,

    Tout d'abord, j'avoue que je ne sais pas du tout si je me trouve dans le bon forum... Excusez-moi d'avance si ce n'est pas le cas.

    Je me pose depuis quelques jours une question. Si la réponse à cette question est « oui », je fais la fête . Question résumée (le détail est plus bas) : est-il possible de « surveiller » (là, je sais que c'est oui) les choses mises en mémoire par un processus particulier, et surtout de les récupérer pour en faire quelque chose ?

    Exposé des faits :

    Windows XP. Intel centrino Duo (Je ne sais pas si c'est important).

    Je dispose d'une application graphique qui m'affiche du texte. Ce texte n'est pas sélectionnable et varie au cours du temps. L'application est faite en C++. Je me suis amusé avec un programme dont j'ai oublié le nom à regarder le contenu de la mémoire généré par ce le processus du programme. Et j'y ai vu le sus-mentionné texte. (EDIT : Le programme s'appelle odbg200k)

    Je sais donc que le texte transite par la mémoire. La vraie question est de savoir si je peux surveiller cette mémoire pour filtrer ce qu'elle contient et récupérer certaines chaînes de caractères pour ensuite en faire ce que je veux. Une sorte de filtre sur la mémoire en live en fait...

    Je n'ai aucune idée de la faisabilité d'une telle chose. Je ne demande pas comment faire pour l'instant. J'aimerai juste savoir si c'est possible. Merci d'avance pour vos « oui » ou « non » Si la réponse est « non », je me tournerai vers la création d'un petit truc permettant de reconstituer le texte à partir d'une capture d'écran... C'est pas gagné

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    Par défaut
    Bonjour,

    Ce serait extrêmement simple sous Linux. Sous Windows XP, il faut effectivement quelques logiciels pour le faire.

    Cela dit, si c'est récupérer le texte d'un élément d'une fenêtre affichée, il doit être possible de récupérer le handle de ta fenêtre puis, de là, celui de l'élément concerné et, enfin, d'interroger cet élément pour qu'il te donne la réponse.

    En tout état de cause, c'est de la programmation système sous Windows. Si tu sais que cette application est écrite en C++, peut-être disposes-tu des sources, auquel cas il suffit de modifier un tout petit peu le programme pour déposer cette info quelque part, voire même changer le status de ta zone de texte pour qu'elle devienne sélectionnable.

    Je déplace dans le forum concerné.

  3. #3
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Ca semble sympa dit comme ça, mais à vu de nez, je ne pense pas que cette fenêtre utiliser des composants windows standard. C'est une application type "jeu" en 3d, avec juste une zone de "chat" sur le côté. D'ailleurs il y a aussi une version MAC.
    (non non, je ne veux pas tricher )

    Je ne dispose pas des sources, c'est juste qu'en essayant de fouiner le .exe avec odbg200k, j'ai vu des noms de fichiers .cpp dans le "code". J'en ai donc déduit qu'il avait été fait avec C++.

    J'avoue que je bloque complètement. Ca me semble tellement insurmontable que j'ai l'impression qu'il serait plus facile de faire à partir de zéro un analyseur de caractères à partir d'une image.
    Mais j'aimerais autant être sur avant de me lancer dans un truc qui va me prendre des dizaines d'heures.


    il doit être possible de récupérer le handle de ta fenêtre puis, de là, celui de l'élément concerné et, enfin, d'interroger cet élément pour qu'il te donne la réponse.
    Bon, admettons, même si ça ne marche pas, ça m'intéresse pas mal ! Ou est-ce que je peux trouver des infos sur la façon de procéder ?
    Je suis un total débutant dans le domaine des composants windows, de l'assembleur, de la mémoire, etc. Mais c'est loin de me faire peur

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Commence par regarder avec Spy++ si le texte est dans un composant Windows qu'il est possible d'interroger.

    Si oui, on pourra sans doute faire quelque chose.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    +1 avec Médinoc : d'abord voir si c'est un contrôle standard (même s'il est graphiquement customisé) via Spy++. Si oui, récupérer le texte sera (presque) trivial. Si non, les ennuis commencent...

    Mais on devrait quand même réussir à pouvoir trouver quelque chose en fouillant un peu, si tu acceptes de mettre les mains dans le cambouis. Au pire, comme le binaire n'évolue à priori pas, tu peux toujours tenter de l'ouvrir, et de trouver l'adresse où ce texte est stocké. Il y a fort à parier que l'adresse soit constante (au moins pour chaque instance du programme), donc qu'elle puisse être dumpée par polling une fois qu'elle sera trouvée.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    si tu acceptes de mettre les mains dans le cambouis.
    Ca fait des semaines que j'ai les mains noires de code et de nouvelles choses.
    Je viens à la base du monde JAVA et il fallait absolument que je me mette à ces choses là.
    Donc j'accepte avec plaisir

    Il y a fort à parier que l'adresse soit constante
    J'en doute fort.
    Quand j'ai regardé la mémoire avec odbg200k, ça n'avait pas l'air de rester en place du tout.
    J'ai eu l'impression que ce que je voyais n'était pas le contenu de cette fameuse zone de texte, mais seulement la ligne qui y était ajoutée.
    Je vais vérifier un peu mieux.

    Et je vais tester ce fameux spy++ une fois chez moi ce soir pour voir ce que ça dit.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/12/2009, 11h51
  2. [C# 3.5] Récupérer et manipuler le texte d'une fenêtre
    Par Yukizz dans le forum Windows Forms
    Réponses: 0
    Dernier message: 12/05/2009, 10h27
  3. [PowerBuilder] Récupérer la main sur une fenêtre modale
    Par jpdar dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 12/06/2006, 14h21
  4. Faire défiler un texte sur une fenêtre
    Par Crisanar dans le forum Windows
    Réponses: 15
    Dernier message: 24/11/2004, 23h05

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