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

MFC Discussion :

Comment établir un lien entre 2 applications ???


Sujet :

MFC

  1. #1
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut Comment établir un lien entre 2 applications ???
    Salut,

    Dans mon application MFC, l'utilisateur doit remplir un formulaire. Le but est de faire l'intégration d'une branche de développement vers le tronc commun pour des changelist données...

    L'utilisateur peut bien sûr remplir les champs à la main. Mais je voudrais aller plus loin, pour lui procurer plus de comfort

    Je voudrais que l'utilisateur puisse aller dans le logiciel d'intégration (Perforce),sélectionner une changelist avec la combinaison Ctrl + Clic droit (par exemple) et que le numéro de la changelist sélectionné soit reporté automatiquement dans le CEdit de mon formulaire.


    Remarque: La sélection n'est pas dragndropable, mais si on fait copier c'est le numéro qui est copié.

    Voilà c'est bien beau tout ca. Mais je ne sais vraiment pas du tout comment faire, quels sont les concepts à mettre en oeuvre et ni si c'est faisable...

    Est-ce que quelqu'un saurait me mettre sur la voie ?

    Merci
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Dans VC++, menu Outils, lances Spy++. Que te dit-il (Menu Rechercher->Rech. une fenêtre) à propos de cette liste (nom de la classe en particulier).

  3. #3
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    Je m'aventure vraiment en terrain inconnu lol...

    Spy++ me donne pour la fenetre en question :
    Handle : 000502B0
    Caption: ""
    Class: SysListView32
    ... et maintenant ?
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Bon ça commence pas trop mal. C'est un composant standard de Windows, bien documenté:
    http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/listview/reflist.asp
    mais c'est pas tout rose car tu peux pas l'utiliser comme s'il était à toi car y'a des contraintes dues à la barrière entre les 2 processus.
    Tu peux récupérer sans problème la position de l'item sélectionné, mais son texte par exemple je ne pense pas que ça marche car tu dois passer un pointeur, et les pointeurs, c'est valide que pour un seul processus.
    Avant tout je me pose une question : ça va marcher comment ton truc : tu lances l'autre appli, le mec choisi une ligne et puis ? Comment tu détermines qu'il a choisi une ligne / décide qu'il a saisi l'information ?

  5. #5
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    Je vois ca comme ca :
    - l'utilisateur lance l'application MFC.
    - il remplie son formulaire
    - Il va dans le logiciel perforce, il cherche la Changelist qu'il veut
    - Pour sélectionner et inscrire la valeur : il clique dessus avec la combination "CTRL + Clic Droit".

    Est-ce qu'il n'y aurait pas moyen de ruser ? Comme je l'ai déja dit si on fait "CTRL + C " sur une ligne sélectionné dans perforce, ca copie le numéro de changelist ( exactement ce que je veux ).
    Est-ce qu'on peut faire en sorte que :
    "CTRL + Clic Droit" = "CTRL + C" + "CTRL V dans ma CEdit"

    :
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Personnaliser le comportement d'une fenêtre qui t'appartient c'est pas un problème. Mais là elle appartient à un autre process. Le code qui la fait vivre est exécuté par lui. Donc pour modifier le comportement de cette fenêtre, il faut modifier le process...
    Autrement dit, il faut que tu codes ce qui va bien pour inetrcepter le CTRL+CLIC droit (pas trop dur), et que tu injectes ce code dans l'autre process (là ça se complique).
    http://www.codeproject.com/threads/winspy.asp
    (voir "How to Subclass a Remote Control With this Technique" en particulier).
    Une autre option plus simple, c'est:
    - tu lances ton applis
    - elle trouve la fenêtre Perforce
    - elle la met en avant plan
    - le mec choici la ligne
    - quand ta fenêtre se retrouve à nouveau au premier plan, elle envoie un message CTRL-C à Perfoce et récupère ainsi la bonne ligne

    ça c'est faisable assez simplement.

  7. #7
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    Merci,

    j'vais me pencher la dessus maintenant.
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Pour moi tu n'as pas besoin d'écrir dans un autre process, il faut juste trouver le moyen de surveillier toute les actions de touches clavier même si ton application n'est pas active.

    Quand un Ctrl+C est capté il faut prendre le contenu de la fenêtre en cours d'activation c'est elle qui contient le numéro que tu veux puis il faut copier la valeurs dans ta case.

    Il y a une appli qui permet de lister toute les fenêtres avec tous les bouttons cases et autre. en utilisant cela tu récupère la fenetre active, qui doit être ta case avec le numéro.

    http://www.codeproject.com/tools/showwindowtree.asp

    Par contre je ne sais pas comment être avertit d'une action clavier si ton application n'est pas celle qui a le focus.

  9. #9
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    En fouillant un peu sur codeproject j'ai trouvé ca :
    http://www.codeproject.com/tools/windowspy.asp
    C'est un spy++ avec lequel il est possible de modifier le composant cible.
    J'ai essayer avec ma ListView, je peux jouer sur la visibilité. Il est également possible de modifier en run-time le titre d'une fenetre etc...

    Malheureusement il n'est pas possible de récupérer la valeur d'un item d'une ListView...

    En tout cas, je pense qu'en essayant de comprendre comment cette appli marche et de l'adapter , il doit y avoir possibilité d'arriver à mes fins... TO BE CONTINUED
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Comme je te l'ai dit, pour un list view item ça marche pas car c'est un pointeur que tu passes. Pour le texte d'une fenêtre c'est différent, car bien que ce soit toujours un pointeur (sur une chaine de caractère), Windows se charge de faire du marshaling pour WM_SETTEXT et WM_GETTEXT.
    Capturer un CTRL-C est faisable de manière indirecte assez facilement : il suffit de surveiller le presse papier grâce à SetClipboardViewer qui te permet d'être averti quand un texte (ou autre) a été copié. Par contre tu sais pas depuis quelle appli il a été copié.
    Pour détecter ton action clavier, je t'ai donné un lien qui traite de plusieurs solutions. Toutes ces solutions consistent à faire exécuter ton propre code par l'application concernée.

  11. #11
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    Merci bcp.

    Maintenant "yapuka" comme on dit
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

  12. #12
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    j'ai fait un truc comme ça pour automatiser des processus de compilation, tout le monde était très content. Jusqu'au jour où on change de version, et où l'IHM du logiciel change et tout est à refaire...

    Est-ce que tu as regardé s'il n'éxistait pas un moyen plus "orthodoxe" de communiquer avec Perforce ? parce que si ton logiciel est destiné à durer plus longtemps que toi dans l'entreprise ça risque de poser des problèmes à ton successeur, parce qu'en général ce genre de petits outils est rarement bien documenté. Maintenabilité....

  13. #13
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    Effectivement tu as raison. Faut encore que je vois comment je vais faire ca... je crois que vu le peux que ca apporte et la complexité que ca entraine, je vais laisser tomber pour l'instant et laisser à l'utilisateur la joie d'exécuter la séquence : alt+tab , ctrl+c , alt+tab , ctrl+c.
    Si j'ai le temps à la fin, je customiserais un peu le tout...
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

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

Discussions similaires

  1. Comment établir le lien entre Visual Designer et le code
    Par Walterbelo dans le forum PureBasic
    Réponses: 6
    Dernier message: 02/12/2012, 19h30
  2. Réponses: 6
    Dernier message: 02/12/2007, 10h30
  3. Liens entre deux applications
    Par Plawi dans le forum MFC
    Réponses: 3
    Dernier message: 14/03/2006, 23h01
  4. [java] établir un lien avec une application java
    Par pmartin8 dans le forum Access
    Réponses: 2
    Dernier message: 19/10/2005, 14h36
  5. Réponses: 3
    Dernier message: 20/01/2005, 19h19

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