Simuler clique bouton [Résolu]

goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention - 5 déc. 2004 à 16:34 - Dernière réponse : goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention
- 2 mars 2005 à 15:29
Salut,

Avec spy++ j'ai récupérai le handle d'un bouton (d'un programme qui n'est pas de moi).

Je voudrais simuler un clique sur ce bouton(pas forcément un clique mais je veux que ça ouvre la fenêtre qui est en rapport avec ce bouton).

J'ai essayer de délectionner ce bouton pour ensuite simuler une frappe sur entée mais j'arrive pas à le selectionner.

Pouvez vous m'aider ???
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 déc. 2004 à 17:10
3
Merci
PostMessage(hwndParent, WM_COMMAND, buttonID, hbutton);

ciao...
BruNews, MVP VC++

Merci BruNews 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de BruNews
goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention - 5 déc. 2004 à 17:32
0
Merci
Ok merci.
Mais comment je fais pour avoir l'ID du bouton ???

Et pour le hbutton ???
j'ai cherché sur MSDn et j'ai pas trouvé... ça peut pas être un HWND car le dernier param de PostMessage est pas un HWND.

Pourrais tu m'en dire un peu plus STP ???
Commenter la réponse de goutbouyo
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 déc. 2004 à 17:49
0
Merci
PostMessage sert a poser un message dans la pile d'appels d'un prog, on met ce qu'on veut dans les params (enfin du coherent seulement.
WM_COMMAND attend bien le hwnd du controle dans lParam donc on le met.
GetDlgItem pour obtenir ce hbutton.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 5 déc. 2004 à 17:54
0
Merci
L'ID tu l'obtiens aussi avec Spy++: "ID de contrôle" dans general, mais s'il vaut 0 ca sert à rien
Commenter la réponse de vecchio56
goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention - 5 déc. 2004 à 18:00
0
Merci
Si j'obtient le hbutton avec GetDlgItem, ça me met ça comme erreur :

PostMessageA' : cannot convert parameter 4 from 'struct HWND__ *' to 'long'
Commenter la réponse de goutbouyo
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 déc. 2004 à 18:03
0
Merci
et le cast, jamais entendu parler ?
(long) hbutton

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention - 5 déc. 2004 à 18:07
0
Merci
Si...... j'y avait pas pensé ...

Par contre ça marche toujours pas ..

Je fais ça :

hbutton=GetDlgItem(hDlg,3);
PostMessage(hDlg, WM_COMMAND, 3, (long)hbutton);

Mais ça simule pas un clique sur ce boutton.
Commenter la réponse de goutbouyo
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 déc. 2004 à 18:13
0
Merci
hDlg est bien la fenetre mere du bouton j'espere.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 5 déc. 2004 à 18:31
0
Merci
Au fait ca pose pas de probleme que ce soient des processus différents?
Commenter la réponse de vecchio56
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 déc. 2004 à 18:34
0
Merci
Aucun si les handles sont les bons.
On ne passe rien ici qui referencerait une adresse memoire d'un processus donc ça roule.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention - 5 déc. 2004 à 19:59
0
Merci
Mon code c'est ça :

if (!(hDlg = FindWindow(0,"Configuration Utility")))
MessageBox(NULL, "erreur1!", "Error!",0| MB_OK);

if (!(hDlg2 = FindWindowEx(hDlg,0,0,"Site Survey")))
MessageBox(NULL, "erreur2!", "Error!",0| MB_OK);

//hDlg = FindWindowEx(hDlg,0,"ReBarWindow32",0);
if (!(hCtrl = FindWindowEx(hDlg2,0,"Button","&CONNECT")))
MessageBox(NULL, "erreur3!", "Error!",0| MB_OK);

hbutton=GetDlgItem(hDlg,3);
if(!(PostMessage(hDlg, WM_COMMAND, 3, (long)hbutton)))
MessageBox(NULL, "erreur4!", "Error!",0| MB_OK);

Ca a l'air bon, non ???
Commenter la réponse de goutbouyo
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 déc. 2004 à 20:16
0
Merci
Comme je ne connais pas le prog dont tu cherches les handles, voila exemple qui change le titre du bouton 'Démarrer'.

void __stdcall ChangeTitreDemarrer(char *psz)
{
HWND h;
h = FindWindow("Shell_TrayWnd", 0);
if(h) {
h = FindWindowEx(h, 0, "BUTTON", 0);
if(h) SetWindowText(h, psz);
}
}

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention - 5 déc. 2004 à 20:50
0
Merci
En fait c'est bon j'ai réussi !!!
Il fallait mettre le idbutton en hexadécimal !
Merci pour votre aide !!!
Commenter la réponse de goutbouyo
NeoUmbrella 117 Messages postés vendredi 5 novembre 2004Date d'inscription 15 janvier 2013 Dernière intervention - 2 mars 2005 à 00:17
0
Merci
Salut, peux tu mettre ton code final stp ?
J'ai le meme probleme, j'ai essayé mais il y 'a un problème.

Merci
Commenter la réponse de NeoUmbrella
goutbouyo 429 Messages postés mardi 6 juillet 2004Date d'inscription 12 janvier 2008 Dernière intervention - 2 mars 2005 à 15:29
0
Merci
Voila mon code :

HWND hDlg;
HWND hbutton;
//...........
hDlg = FindWindow(0,"Configuration Utility");
ShowWindow(hDlg,TRUE);
hbutton=GetDlgItem(hDlg,0x000003EB);
PostMessage(hDlg, WM_COMMAND, 0x000003EB, (long)hbutton);
Commenter la réponse de goutbouyo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.