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

C++Builder Discussion :

Interaction entre 2 logiciels


Sujet :

C++Builder

  1. #21
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Tu utilise la croix en haut a gauche, avec un style drag and drop.
    Quand tu passe sur la fenetre, il te marque son Handle et les diverses informations la "caractisant".

    Edit :
    Avec les fonctions que j'ai mis plus haut, il faut utiliser les noms de class

    lanonyme

  2. #22
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Citation Envoyé par lanonyme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     String NouveauTexte = "ca marche !!" ;
    // Recherche de la fenetre mere
     HWND h = FindWindow("TConnectToInstanceForm.UnicodeClass", NULL);
    // Recherche de l'edit
     HWND h2 =  FindWindowEx(h,NULL,"TTntGroupBox.UnicodeClass", NULL);
     HWND h3 =  FindWindowEx(h,h2,"TTntGroupBox.UnicodeClass", NULL);
    // On la trouver
     HWND h4 =  FindWindowEx(h3,NULL,"TTntEdit.UnicodeClass", NULL);
    // On envoie le message
     SendMessage(h4,WM_SETTEXT,0,(LPARAM)NouveauTexte.c_str());
    Ce que je dois modifier c'est cu qui est en bleu dans le code ?

  3. #23
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Oui c'est ça.

    concernant le h2 et h3, je l'ai fai deux fois car le premier qu'il trouvrai (de groupbox donc le h2) n'etait pas celui qui contenait mon edit.

    Edit :

    Exemple pour l'edit de IE :
    qui est beaucoup plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String NouveauTexte = "ca marche !!" ;
    // Recherche de la fenetre mere
     HWND h = FindWindow("IEFrame", NULL);
    // Recherche de l'edit
     HWND h2 =  FindWindowEx(h,NULL,"ComboBox", NULL);
    // On envoie le message
     SendMessage(h2,WM_SETTEXT,0,(LPARAM)NouveauTexte.c_str());
    lanonyme

  4. #24
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Pour la ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     HWND h = FindWindow("TConnectToInstanceForm.UnicodeClass", NULL);
    si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     HWND h = FindWindow("MainWinForm", NULL);
    es-ce un nom valide ou pas?


    et pour le TEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HWND h4 =  FindWindowEx(h3,NULL,"Edit", NULL);
    ??

    EDIT : oki j'avais pas encore vu ton edit
    et tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     HWND h = FindWindow("IEFrame", NULL);
    a quoi correspond IEFrame ?

  5. #25
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Quelque chose dans le genre devrait fonctionner ou non ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     String NouveauTexte = "ca marche !!" ;
    // Recherche de la fenetre mere
     HWND h = FindWindow("MainWinForm", NULL);
    // Recherche de l'edit
     HWND h2 =  FindWindowEx(h,NULL,"Panel", NULL);
     HWND h3 =  FindWindowEx(h,h2,"Panel", NULL);
    // On la trouver
     HWND h4 =  FindWindowEx(h3,NULL,"Edit", NULL);
    // On envoie le message
     SendMessage(h4,WM_SETTEXT,0,(LPARAM)NouveauTexte.c_str());
    Pourquoi n'utilise ont pas les handles ? comment il sait dans quel application il doit faire tout ca ?

  6. #26
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    1- Le IEFrame correspond au nom de la classe de la fenetre d'IE (que tu peux voir en utilisant myCatch et en selection la fenetre IE) C'est le parent de mon Edit

    2- On les utilise les handles
    Puisqu'on les cherches avec FindWindow. Il ne faut pas utiliser les valeurs trouver dans le logiciel car il change a chaque fois.

    3- Concernant ton code, cela devrai fonctionner.
    En lisant, j'en deduit que ton edit ce trouve dans le deuxieme panel qui se trouve dans ta form, non ? sinon il ne fau qu'un seul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FindWindowEx(h,h2,"Panel", NULL);
    4- Pour savoir l'application apres il faut tester, par exemple, le titre de la fenetre parent. dont on a le handle avec findwindow.

    lanonyme

  7. #27
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     String NouveauTexte = "ca marche !!" ;
    // Recherche de la fenetre mere
     HWND h = FindWindow("TForm1", NULL);
    // Recherche de l'edit
     HWND h2 =  FindWindowEx(h,NULL,"TPanel", NULL);
    // On la trouver
     HWND h4 =  FindWindowEx(h2,NULL,"TEdit", NULL);
    // On envoie le message
     SendMessage(h4,WM_SETTEXT,0,(LPARAM)NouveauTexte.c_str());
    Et j'ai crée une autre application a coté ou j'ai juste mis dans ma Form un TPanel puis un TEdit et ca ne veut pas.
    Dois-je enlever les T ou faire autre chose ?

  8. #28
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Non, les T sont tres bien la ou il sont
    C'est bien comme ca que sont declaré les classes du borland

    A mon avis, si tu test en debug, tu verra que s'il ne trouve pas ta fenetre, il renvoie NULL.

    Comme tu as du lancer deux projet Builder, il as pris celui ou y'a pas de TEdit dans un TPanel

    Donc c'est qu'il faut tester par exemple, le nom de ton application.

    lanonyme

  9. #29
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Quand je test en debug, h me retourne une valeur (00000016) qui n'est donc pas NULL

    Citation Envoyé par lanonyme
    Donc c'est qu'il faut tester par exemple, le nom de ton application.
    Je fais ca comment ??

  10. #30
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Citation Envoyé par Furlaz
    Quand je test en debug, h me retourne une valeur (00000016) qui n'est donc pas NULL
    c'est normal, je pense que la valeur null se trouverai plus pour h4 parce que la fenetre il doit la trouver, puisqu'il y'en a deux

    mais comme valeur, je trouve bizarre.... as tu regarder la valeur apres que la fonction soit executé ? c'est a dire en t'arretant sur la ligne du h2.

    pour la compraison de nom, je sais plus la. je regarderai chez moi et je te redis.

    lanonyme

  11. #31
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Effectivement j'ai bien une valeur NULL pour h4 et meme pour h2

  12. #32
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Je viens de remarquer que l'on pouvait specifier le caption dans le FindWindow
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HWND h = FindWindow("TForm1", "TextDansLeCaption");
    Sinon pour obtenir le caption d'une form, y'a Comment récupérer le texte affiché dans la barre de titre d'une fenêtre quelconque ? dans la FAQ.

    En l'utilisant, on peu avoir un code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    HWND h ;
    // Recherche de la fenetre mere
    while(GetACtiveWindowCaption(h) != "TextDansLeCaption" )
    {
      h = FindWindow("TForm1", NULL);
      if (h == NULL) break ;
      Sleep(200) ; 
    }
    lanonyme

  13. #33
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Merci beaucoup lanonyme pour ton aide précieuse.

    Maintenant ca fonctionne avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     String NouveauTexte = "ca marche !!" ;
    // Recherche de la fenetre mere
     HWND h = FindWindow("TForm1", "TextDansLeCaption");
    // Recherche de l'edit
     HWND h2 =  FindWindowEx(h,NULL,"TPanel", NULL);
    // On la trouver
     HWND h4 =  FindWindowEx(h2,NULL,"TEdit", NULL);
    // On envoie le message
     SendMessage(h4,WM_SETTEXT,0,(LPARAM)NouveauTexte.c_str());
    En sachant que j'ai :
    - d'une part une application avec un TPanel et un TEdit dans ce panel le tout sur ma form principal
    - d'une autre part une application avec le programme ci-dessus

    Encore une fois

  14. #34
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Ce fut avec plaisir

    D'autres soucis en rapport avec le titre du sujet ??

    Sinon un p'tit

    Merci

    lanonyme

  15. #35
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Juste une dernière question :

    Si j'ai plusieurs TEdit sur mon TPanel par exemple comment je trouve celui que je veux ??

  16. #36
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Citation Envoyé par Furlaz
    Juste une dernière question :

    Si j'ai plusieurs TEdit sur mon TPanel par exemple comment je trouve celui que je veux ??
    Tiens je m'y attendai pas a celle la

    Le seul moyen c'est de tester ... parce que tout depend de l'ordre de creation de tes Edits.
    Une fois que tu connait l'autre du y accede avec les multiples FindWindowEx.

    lanonyme

  17. #37
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Ca y est j'ai trouvé comment faire dans le cas ou on a plusieurs TEdit dans un TPanel ou meme plusieurs TPanel dans la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     String NouveauTexte = "ca marche !!" ;
     // Recherche de la fenetre mere
     HWND h = FindWindow("LeTypeDeLaFenetre","LeCaptionDeLaFenetre");
     // Recherche du TPanel
     // On recherche autant de fois que besoin, Dans ce cas on cherche le 3ème TPanel dans la form
       HWND h2 =  FindWindowEx(h,NULL,"TPanel", NULL);
       HWND h3 =  FindWindowEx(h,h2,"TPanel", NULL);
       HWND h4 =  FindWindowEx(h,h3,"TPanel",NULL);
     // On cherche maintenant le TEdit, ici le 2ème dans le TPanel
       HWND h5 =  FindWindowEx(h4,NULL,"TEdit", NULL);
       HWND h6 =  FindWindowEx(h4,h5,"TEdit", NULL);
     // On envoie le message
       SendMessage(h6,WM_SETTEXT,0,(LPARAM)NouveauTexte.c_str());
    Avec MyCatch et le Debugger de Borland Builder C++ il est possible de trouver la Position du composant cherché :

    Pour cela il suffit de comparer la valeur des handle lors du debuggage pour chaqu'un avec ceux trouvé par MyCatch

    En tout cas beaucoup a lanonyme

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème d'interaction entre un userform et un logiciel externe
    Par lavoyech dans le forum Windows Forms
    Réponses: 0
    Dernier message: 20/04/2012, 11h04
  2. Interaction entre logiciels différents
    Par EvanG dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 17/04/2007, 15h49
  3. [FB] Compatibilité entre deux logiciels et le SGBD
    Par Benjamin GAGNEUX dans le forum Débuter
    Réponses: 13
    Dernier message: 28/01/2005, 16h30
  4. [Collaboration/Interaction] Peut-on schématiser une interaction entre un bouton de commande et un autre objet ?
    Par manel007 dans le forum Autres Diagrammes
    Réponses: 5
    Dernier message: 21/09/2004, 01h01
  5. [ASCII] Codes différents entre 2 logiciels
    Par MinsK dans le forum Assembleur
    Réponses: 3
    Dernier message: 20/04/2004, 09h34

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