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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    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 : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    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 confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    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 : 55
    Localisation : France, Hauts de Seine (Île de France)

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

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    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

+ 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