Demander a un bouton de cliquer sur un autre

Signaler
Messages postés
68
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 janvier 2010
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Je sais c'est expliqué bizarement.
tous ce que je veux c'est demander a un bouton d'effectuer l' operation suivante : cliquer sur un bouton présent dans la même fenêtre voici ce ke je demande a mon bouton2 :

private
void button2_Click(
object sender, System.EventArgs e)
{
      win=FindWindow(
null,"Form1");

      if((
int)win==0)      MessageBox.Show("Fenetre non trouvée");
      
else
      {
            Thread T=
new System.Threading.Thread(
new System.Threading.ThreadStart(ThreadProc));
            T.Start();
      }
}
Voici le ThreadProc:

public
void ThreadProc()
{

      int retour;
      IntPtr button; 
      POINT pt=
new POINT();
      IntPtr handle;
      handle=button1.Handle;
      Form myForm=button1.FindForm();
      IntPtr HWND=myForm.Handle;

      if((
int)handle==0)      MessageBox.Show("Pas trouver");
      pt.x+=150;   //Emplacement du bouton dans la fenetre
      pt.y+=200;

      int downMsg=0x0201;
//WM_LBUTTONDOWN
      IntPtr downWParam =
new IntPtr(0x0001);   //MK_LBUTTON

      int upMsg = 0x0202;
//WM_LBUTTONUP
      IntPtr lParam =
new IntPtr(pt.x | (pt.y << 16));
      PostMessage(handle, downMsg, (
int)downWParam,(
int) lParam); //LBUTTONDOWN
      Sleep(1000);
      PostMessage(handle, upMsg, (
int)IntPtr.Zero,(
int) lParam); //LBUTTONUP
}

Je vois le bouton qui fait comme si on cliquer dessus mais rien ne se passe: l'appui sur le bouton 1 m'affiche juste une messagebox avec marquer BOUTON1 c'est tout.

Pouvez-vous m'aider SVP. Merci

12 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
???

je ne comprends pas bien...
tu veux que lorsque tu cliques sur ton bouton ce soit un autre qui soit cliquer ???

pourquoi ne pas toujours simplement partagé leur delegate, voire même créer une méthode commune ?

Séb

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

La classe Button possède une méthode PerformClick, mais il serait mieux de déporter le code dans une méthode dédie et d'appeler celle ci au déclenchement des 2 events.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Prochaine fonctionnalité sur CS : le lock sur les messages

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
lol... oui alors, gestion des priorités en fonction du grade sur CS

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Ou un popup... "Attention, sebmafate répond deja à la question"

Mx
MVP C# 
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
et encore, vous avez de la chance... car j'ai levé le pied... j'ai du mal à faire 100 points sur la semaine

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
T'inquiète, je plafonne a 50 ces temps :/

Mx
MVP C# 
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008

C'est à ça qu'on reconnait un admin :)

[:D] @++
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
à quoi ? au nombre de points... ou au flood sur les threads

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008

Nbre de points -> implication dans le réseau (et oui, vous vous impliquez beaucoup, chapeau!)
Les floods, bah c pas nécessairement mauvais même s'il n'y a pas de rapport avec le sujet. Du moment que la question a trouvé réponse :)

[:D] @++
Messages postés
68
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 janvier 2010

en fait ce ke je veux faire c utiliser les API windows pour faire croire a tel bouton kon a cliquer dessus (c juste un pti test)
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Dans ce cas là, si c'est pour une autre application, tu dois regarder du côté de l'envoi des notifications WM_LBUTTONDOWN, WM_LBUTTONUP (en gardant à l'esprit que sous Vista ça ne passera pas forcément, UIPI oblige) ou encore du côté des API d'accessibilité/UI automation qui peuvent aussi servir à ce genre de tâche.

Si c'est pour ta propre application, je reste sur mon message précédent.

/*
coq
MVP Visual C#
CoqBlog
*/