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 :

Appuyer sur le bouton d'une autre application.


Sujet :

C++

  1. #1
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut Appuyer sur le bouton d'une autre application.
    Bonjour,

    Depuis mon application je souhaiterai appuyer sur le bouton d'une autre application (dont je n'ai pas les sources). Je ne sais pas comment m'y prendre... auriez vous quelques indices ??

    Merci de votre aide.

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 159
    Points
    3 159
    Par défaut
    Salut

    En C++, il y a AutoIt pour windows et DogTail pour linux.

    Mais sinon, tu peux choisir d'utiliser java plutôt que C++ et la classe java.Robot. C'est portable (fonctionne sur linux et win, d'expérience) et intégré de base.

    Edit : en fait dogtail n'est pas C++. Il y a une liste complète des softs qui font ça.

  3. #3
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    Merci pour ta réponse.
    En fait je souhaite faire moi même l'application...
    J'ai un peu progressé tout de même:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        //Get the simulator pointor
        CWnd* pWindow;
        pWindow = CWnd::FindWindow(NULL,"L'autre application");
        if (pWindow == NULL) return;
        //lphaSimulatorWindow->SendMessage(WM_CLOSE,0,0);
        pWindow->SendMessage(WM_SETFOCUS, 0, 0);
        //Put to top
        ::BringWindowToTop(pWindow->m_hWnd);
        pWindow->SendMessage(WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(400,15));
        pWindow->SendMessage(WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(400,15));
    La mise au premier plan fonctionne, mais pas le clic souris sur mon bouton en position (400,15)... Voyez vous une explication ??

  4. #4
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 887
    Points : 1 531
    Points
    1 531
    Par défaut
    1) les coordonnées de WM_LBUTTON... sont des coordonnées client et pas des coordonnées écran.

    2) Tu envoies le message à la fenêtre principale, alors qu'il faudrait l'envoyer au bouton. Fais un WindowFromPoint, un EnumChildWindows ou un FindWindowEx pour trouver la fenêtre du bouton.

  5. #5
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    Avec votre aide j'ai trouvé une solution. La voici pour les suivants :
    (bon c'est un peu fait à l'arrache mais ça marche)
    Merci à tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
        CWnd *pWindow, *pPoint;
        POINT point;
        RECT str_Rect; 
     
        //Récupération du pointeur de l'application
        pWindow = CWnd::FindWindow(NULL,"Mon application");
     
        if (pWindow == NULL) 
        {
            ::MessageBox(NULL, "Application  non trouvé", "Attention", MB_OK | MB_ICONASTERISK);
            return;
        }
     
        //Mise de l'application au premier plan
        pWindow->SendMessage(WM_SETFOCUS, 0, 0);
     
        ::BringWindowToTop(pWindow->m_hWnd);
     
        //Pause
        Sleep(1000);
     
        //Positionement de l'application en haut à gauche
        pWindow->GetWindowRect(&str_Rect);
        pWindow->MoveWindow(0,0,str_Rect.right-str_Rect.left, str_Rect.bottom-str_Rect.top,true );
     
        //Pause
        Sleep(1000);
     
        //Poisition bouton de test
        point.x=467;
        point.y=124;
     
        //Récupération du pointeur du bouton à cliquer
        pPoint = pWindow->WindowFromPoint(point);
     
        if (pPoint == NULL)     
        {
            ::MessageBox(NULL, "Bouton non trouvé", "Attention", MB_OK | MB_ICONASTERISK);
            return;
        }
     
        //Clique bas
        pPoint->PostMessage(WM_LBUTTONDOWN, 0, 0);
        Sleep(1000);
     
        //Clique bas
        pPoint->PostMessage(WM_LBUTTONUP, 0, 0);

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/04/2015, 16h23
  2. Intercepter l'action sur un bouton dans une autre vue
    Par Hira. dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 17/12/2008, 10h51
  3. Cliquer sur un bouton dans une autre application
    Par FredericB dans le forum C++Builder
    Réponses: 16
    Dernier message: 10/05/2008, 18h23
  4. Réponses: 12
    Dernier message: 11/10/2006, 23h43
  5. Comment Appuyer sur le bouton d'une page web...?
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/01/2005, 15h07

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