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 :

[Question] Discussion avec d'autres applications


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut [Question] Discussion avec d'autres applications
    Bonjour,
    bon OK mon titre n'est pas très explicite mais en gros il est question ici de "discussion" entre mon programme et un autre programme lancé ... Ce que j'entends par discussion dans un premier temps c'est récupérer un texte d'un programme à l'autre ... Je m'explique.
    Mon objectif est le suivant :
    Ce qu'on a :
    Mon programme : Prog1 qui est lancé dès le début de l'ensemble de la manipulation
    Un Executable afichant une fenetre avec dans un label (ou edit ??? est-ce que ça a de l'importance ?) un texte présélectionné : Prog2
    Un troisième Programme (Prog3) qui devra recevoir dans un Edit le texte du premier ...

    Ce que je veux :
    Bha comme je viens de le dire copier le texte Prog2 dans Prog3 ...


    Ma question :
    Evidemment je ne vais pas vous demander le source complet : déjà je ne l'aurait pas puis ça n'aurait aucun intérêt pour moi.
    Ce que je vous demande donc c'est juste des indications ou des pistes pour savoir vers quoi m'orienter (des mots clé ou quelques liens) pour :
    comment identifier Prog2 depuis Prog1 et accéder à ses différents composants sachant qu'il n'apparait pas dans la barre des taches ?



    Merci de m'avoir lu, en l'attente d'une de vos réponses,
    Merci

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Juste une question : cest toi qui fais les 2 programmes ou tu fait un des 2 pour avoir la maitrise sur l'autre qui est un programme tiers ?

  3. #3
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Non je ne fais moi-même qu'un programme sur les trois (qui sert à lier les deux autres jsutement). Si tu veux pour un exemple on pourrait assimiler ce que je cherche à faire à :
    Admettons tu crées un mail (donc ça c'est Prog3) dans lequel tu dis que Madame X aime la couleur ####. L'objectif de mon programme c'est de remplacer les ### par la couleur que Madame X à renseigné via internet explorer (Prog2) ... En gros je lance mon programme(Prog1) qui lance alors la création de mon mail (Prog3) et je veux qu'il écrive tout seul Madame X aime le bleu (bleu vient de Prog2)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Salut,
    J'ai pas mal travaillé sur ce genre de chose dans le cadre de mon boulot.
    Pour info, tu ne pourras récupérer des infos que sur les controls ayant un handle de fenêtre. Le TEdit en est un mais pas le TLabel. Ce qui signifie qu'à part avec un OCR, tu ne peux pas lire le contenu d'un Label d'une autre application.
    Pour commencer, je te conseille (si je puis me permettre) de te procurer un outil qui te listera l'ensemble des controls fenêtrés de l'application sur laquelle tu veux travailler. C'est plus facile pour faire des tests et récupérer les classes de fenêtre de l'appli distante. Pour ma part, j'utilise Winspect qui est super vieux mais qui fonctionne toujours très bien. (tu le trouveras là : http://sottnick.narod.ru/english.htm . Mais il y a peut-être mieux maintenant ...

    Ensuite va jeter un oeil sur les api FindWindow et GetWindow qui te permettront de retrouver les handles de fenêtre des controls que tu veux lire. Pour récupérer le texte d'un control type edit ou autre, tu envois le message WM_GETTEXT au handle de fenêtre du control en question.
    Voilà déjà une piste pour commencer.
    Bon courage !
    Eb.

  5. #5
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Merci ebastien,
    c'est exactement ce que je voulais : des mots clés pour savoir vers ou m'orienter ... Sinon en ce qui concerne le texte que je veux récupérer en y réfléchissant bien c'est un TEdit donc ça devrait être plus simple,

    Je vous tiens au courant

    Merci affaire à suivre

  6. #6
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Je précise avant tout que je n'ai toujours rien testé, mais je poste ce message histoire de voir si pour le moment je réagis comme il faut vis-a-vis de ce que je lis et également pour mieux cerner la chose.

    Dans un premier temps il me faut donc récupérer "l'identifiant" de Prog2. Si je ne me trompe pas c'est ça qu'on appelle le Handle. Pour cela il va falloir que je me serve de FindWindow.
    Ce numéro récupéré il me faut récupéré le "numéro d'identification" du TEdit de la dite fenêtre en usant de GetWindow.

    Est-ce bien ça où est-ce que GetWindow sert pour récupérer le Handle (dans la définition que je lui donne) de la fenêtre ?
    Ai-je bien cerné la notion de Handle ?

    Finalement j'utiliserais WM_GETTEXT pour récupérer le texte et WM_SETTEXT si je ne me trompe pas pour l'afficher dans PROG3 (qui lui aussi dans mon cas est un TEdit)

    Merci beaucoup pour toute votre aide

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Salut !
    Effectivement, on peut considérer un handle comme étant un identifiant unique de tous les controls instanciés dans Windows. Il faut savoir que le handle d'un control change d'une instance à l'autre. C'est à dire par exemple que le handle de ta fenêtre changera si fermes ton appli et que tu la relances.
    Il est généré par Windows au moment de l'instanciation.
    Comme tu l'as compris, FindWindow va te permettre de trouver le handle de la fenêtre d'une application par son titre et sa classe.
    GetWindow permet de récupérer le handle d'une fenêtre ou d'un bouton, champ edit ou tout control dit fenêtré (avec un handle) qui a une relation hierarchique avec le handle envoyé en paramètre : Tu peux rechercher une fenêtre enfant (GW_CHILD) ou soeur (GW_HWNDNEXT).
    Tu peux aussi utiliser GetClassName qui te donnera le nom de la classe de fenêtre du handle envoyé en paramètre. Tu vérifies comme ça que tu es bien sur un Tedit par exemple.
    Effectivement WM_SETTEXT te permettra d'envoyer au control distant le texte à afficher.
    N'hésite pas si tu as d'autres questions.
    Bon courage !
    Eb.

  8. #8
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Salut,
    Encore une fois merci pour tout ...
    Avec tes messages et la FAQ j'arrive à m'en sortir, me reste plus qu'à renvoyer la chaine dans un autre programme et le tour est joué => logiquement rien de bien sorcier ...


    DOnc je clos et au pire je reposterai après si vraimet j'ai un soucis mais je pense m'en sortir avec la FAQ ...


    Merci pour tout

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

Discussions similaires

  1. Communication avec d'autres applications windows
    Par anytos268 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 13/11/2009, 14h23
  2. Intégration MIDLET avec d'autres applications
    Par rapha51 dans le forum Java ME
    Réponses: 3
    Dernier message: 01/08/2008, 18h58
  3. Faire communiquer Axapta(Dynamics Ax) avec une autre application
    Par Access Newbie dans le forum Microsoft Dynamics
    Réponses: 5
    Dernier message: 13/12/2007, 15h52
  4. Projet lancé avec une autre application..COMMENT?
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 11/04/2007, 09h57
  5. [VB6]Interractions avec d'autres applications
    Par dbozec dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/11/2005, 19h12

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