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++ Discussion :

Récupérer composants d'une GUI


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Récupérer composants d'une GUI
    Bonjour à tous,

    je voudrais savoir s'il était possible depuis une application, récupérer des informations sur les composants de la GUI d'une autre application.

    En clair si je lance une application X (comme firefox), est-ce que je pourrais récupérer la position de chacun des boutons qui y sont présents depuis mon programme Y (l'onglet firefox, les boutons de réduction, agrandissement, fermeture et tous les autres..) sachant que Y éventuellement ne fait que lancer X.

    Merci beaucoup, je ne trouve pas réponse à ma question sur google, mais j'ai peut-être les mauvais mot-clés.

    jav974

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Dans cette réponse, j'assume que tu programmes sous Win32.
    Comme souvent en informatique, la réponse est "ça dépend".

    Si ton application utilises des contrôles systèmes, alors le système de fenêtres a connaissance de la position de chaque "widget", et il maintient ça dans un arbre. Il existe plusieurs fonctions Win32 qui te permettent de te balader dans cet arbre, notamment GetNextWindow() et FindWindow(). Chaque fois que tu obtiens un handle vers une fenêtre, tu peux par exemple connaitre sa position en appelant GetWindowRect().

    Toutefois, de nombreuses applications n'utilisent pas le système pour dessiner leurs controles. C'est notamment le cas des applications GTK, et, à ma connaissance, des applications Qt (mais je n'ai pas vérifié). Je serais pas étonné que FireFox fasse aussi partie des applications qui dessinent elles même leurs boutons. Dans cette situation, il n'y a pas de solution miracle : le système n'est pas au courant qu'une certaine fenêtre contient un bouton. Il faudra trouver une autre solution.

    Il existe un outil génial nommé Spy++ (qui à ma connaissance est fourni avec le PlatformSDK) qui te permet d'examiner l'arborescence des fenêtres. Cet outil n'est pas magique : ce qu'il fait, tu peux le faire aussi dans une de tes applications.

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    J'ai connu un projet de recherche en interfaces qui détectait la position des boutons en lisant les pixels à l'écran. Leur objectif était de créer une fonctionalité de "rattrapage de clic pas loin", entre autre.

    Je reconnais que ce n'est probablement pas ce que tu cherches, mais c'est une illustration du "ça dépend"
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Merci pour ces réponses. En effet le "ça dépend" est très contraignant dans mon cas puisque je comptais faire tourner mon appli sur linux/windows .

    J'avais aussi pensé à une solution du style récupérer une capture d'écran du programme lancé pour démarrer la détection graphique de bouton dans l'image. Mais au delà même de faire qqc de fonctionnel dans tous les cas, récupérer graphiquement tout élément intéractif d'un programme, ça va pas être de la tarte.

    jav974

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    La plus part du temps, ce genre de besoin vient de l'envie de commander un programme depuis un autre.

    Et toujours la plus part du temps, il suffit de se pencher sur les options en ligne de commande.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Effectivement c'est exactement ce que je cherche à faire, cependant les options de commande ne sont pas une option.

    Ce que je cherche à effectuer, c'est un système de pose de calque ( région semi-transparente ) sur un élément de la GUI inter-actif (un bouton, un lien ou autre) afin de permettre à mon appli X (le lanceur) d'utiliser le programme de manière transparente (un casque EEG ou un systeme EyeTracking permettra de naviguer de calque en calque) sans avoir besoin de souris ni de clavier.

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Dans ce cas là, je pencherai plus vers un contrôleur d'"input device".

    Il "suffit" de créer un driver pour le casque EEG qui génèrerait des événements souris ou clavier.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Comment récupérer la valeur d'un composant d'une form
    Par NacerAli dans le forum Débuter
    Réponses: 5
    Dernier message: 27/02/2010, 11h19
  2. comment récupérer la valeur des composants d'une autre application
    Par AlexTheDoctor dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/12/2009, 18h13
  3. Réponses: 12
    Dernier message: 11/08/2009, 01h36
  4. Composant COM pour ajouter une GUI à un script
    Par omen999 dans le forum Vos Contributions VBScript
    Réponses: 3
    Dernier message: 14/02/2008, 00h01
  5. Réponses: 1
    Dernier message: 31/07/2006, 13h54

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