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 :

[DELPHI 7] récupérer le contenu texte d'un message Windows ou logiciel quelconque


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 46
    Points
    46
    Par défaut [DELPHI 7] récupérer le contenu texte d'un message Windows ou logiciel quelconque
    Bonjour, cela fait plusieurs années que je tente, avec delphi, de récupérer le contenu d'un message qui s'affiche dans Windows. Par exemple, les box messages, du style " voulez-vous enregistrer les modifications de votre document Word avant de quitter" ou directement de Windows, " ce programme a commis une erreur ". J'avais réussi à récupérer avec un hook le contenu des messages, mais il fallait que la souris soit sur le message. J'ai dernièrement trouvé un logiciel qui peut faire cette opération ( Ultra Hal Text-to-Speech Reader). Comme mon projet n'a jamais abouti, j'aimerais savoir si une personne s'y connaît, afin de me donner des pistes nouvelles... J'aimerais tellement pouvoir boucler ce projet.

    Merci

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Alors, voici grosso modo ce que j'entrevois :

    - Savoir enumérer toutes les fenêtres ouvertes dans Windows (Qui dit fenêtre, au sens Windows du terme, dit : Fiches et contrôles fenétrés (boutons, labels, boite d'édition, mémos, etc... ce que Delphi appelle donc un TWinControl).
    Pour ce faire il faut utiliser la fonction de l'API Windows EnumWindows, qui te permet de récupérer les handle de toutes les fenêtres (et controles fenêtrés) ouvertes. Pour ça, tu devrait pouvoir trouver du code par ci par là sur notre forum et dans la FAQ (Fonction rechercher et hop )
    Pour le premier défi (automate démineur), on l'a utilisé en long en large et en travers pour controler la fenêtre du Démineur
    - A partir du Handle d'une fenêtre (qui est du type HWND), tu peux obtenir son Titre, son Caption, ou des choses comme ça.
    - Pour obtenir le texte associé à une fenêtre dont tu connais le Handle, tu as la fonction de l'API Windows GetWindowText

    Windows te propose tout ça :
    The following functions are used to create and manage windows.

    AdjustWindowRect
    AdjustWindowRectEx
    ArrangeIconicWindows
    BeginDeferWindowPos
    BringWindowToTop
    CascadeWindows
    ChildWindowFromPoint
    ChildWindowFromPointEx
    CloseWindow
    CreateWindow
    CreateWindowEx
    DeferWindowPos
    DestroyWindow
    EnableWindow
    EndDeferWindowPos
    EnumChildProc
    EnumChildWindows
    EnumThreadWindows
    EnumThreadWndProc
    EnumWindows
    EnumWindowsProc
    FindWindow
    FindWindowEx
    GetClientRect
    GetDesktopWindow
    GetForegroundWindow
    GetLastActivePopup
    GetNextWindow
    GetParent
    GetTopWindow
    GetWindow
    GetWindowPlacement
    GetWindowRect
    GetWindowText
    GetWindowTextLength
    GetWindowThreadProcessId
    IsChild
    IsIconic
    IsWindow
    IsWindowUnicode
    IsWindowVisible
    IsZoomed
    MoveWindow
    OpenIcon
    SetForegroundWindow
    SetParent
    SetWindowLong
    SetWindowPlacement
    SetWindowPos
    SetWindowText
    ShowOwnedPopups
    ShowWindow
    ShowWindowAsync
    TileWindows
    WindowFromPoint
    WinMain
    Maais je te laisse le soin de trouver ton bonheur dedans...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 46
    Points
    46
    Par défaut
    déjà un grand merci. J'étudie tout ça

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 46
    Points
    46
    Par défaut
    Merci, grâce à ton aide, j'arrive par exemple a détecté si une boîte de dialogue de de Word s'affiche à l'écran. En utilisant GetWindowText comme tu me l'as conseillé, j'arrive bien a récupérer le titre de la boîte. Cependant, j'ai encore besoin d'aide. Je veux pouvoir réussir à récupérer le texte du centre de la boîte, par exemple dans mon cas "Voulez-vous enregistrer les modifications à Document1 ?"

    Je ne sais comment atteindre la zone de ce texte ? Il est peut être possible, en ayant l’handle de la fenêtre faire la liste de son contenu ( caption, TEXT, bouton ??). Je suis vraiment coincé et je semble maintenant si proche .....

  5. #5
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Et avec EnumChildWindows pour énumérer les controles (labels, etc...) ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 46
    Points
    46
    Par défaut
    Mille fois merci !!! Voilà 4 ans que je tourne en rond avec cette histoire !!! en deux posts, tu as réglé mon problème. On m'avait dit que c'était pas possible.



    Un grand grand merci

  7. #7
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Ha ba de rien

    Sur DVP, (presque) tout est possible !

    PS : y'en a qui racontent vraiment n'importe quoi...

  8. #8
    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
    sa fait plus d'un d'un sujet qui parl de meme chose; et waskol le sait déjà
    bah voir: http://www.developpez.net/forums/sho...71#post1282471

  9. #9
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par edam
    sa fait plus d'un d'un sujet qui parl de meme chose; et waskol le sait déjà
    bah voir: http://www.developpez.net/forums/sho...71#post1282471
    J'étais passé à coté de ce sujet
    D'ailleurs, si j'ai fait la suggestion d'effectuer une recherche sur le forum avec EnumWindows, il y a bien une raison non ?
    Le post de notre ami n'avais reçu aucune réponse depuis un petit moment, je l'ai donc aidé, mis sur la voie...
    Je ne vois pas ce qui te chagrine Edam ?

    Peut-être que tu as posté, mais la FAQ donne une réponse depuis plus longtemps que toi... en tout cas, je n'ai rien inventé, c'est sur.

  10. #10
    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
    Citation Envoyé par waskol
    Le post de notre ami n'avais reçu aucune réponse depuis un petit moment, je l'ai donc aidé, mis sur la voie...
    bien vu waskol
    Citation Envoyé par waskol
    Je ne vois pas ce qui te chagrine Edam ?
    rien ,

    Citation Envoyé par waskol
    Peut-être que tu as posté, mais la FAQ donne une réponse depuis plus longtemps que toi... en tout cas, je n'ai rien inventé, c'est sur.
    moi non plus, c'est une suggestion pour rassembler le max dans un seul poste, peut etre sa aidra d'autre surtout pour fasilité la recherche;
    dans tt les cas désoler si tu le prend comme sa

  11. #11
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par edam
    dans tt les cas désoler si tu le prend comme sa
    On s'est juste mal compris, ne t'inquietes pas, tout va bien

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

Discussions similaires

  1. [JavaMail] Lecture contenu texte d'un Message
    Par sebus dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 21/03/2015, 18h45
  2. Réponses: 1
    Dernier message: 26/01/2010, 11h36
  3. Réponses: 3
    Dernier message: 26/10/2009, 13h32
  4. Réponses: 2
    Dernier message: 21/04/2009, 10h54
  5. [phpToPDF] Récupérer le contenu texte d'un fichier PDF
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 13/11/2007, 11h40

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