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.
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.
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.
Merci pour ta réponse.
En fait je souhaite faire moi même l'application...
J'ai un peu progressé tout de même:
La mise au premier plan fonctionne, mais pas le clic souris sur mon bouton en position (400,15)... Voyez vous une explication ??
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));
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.
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);
Partager