Retenir les positions de clic de souris ?

the_snip Messages postés 3 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 17 décembre 2009 - 17 déc. 2009 à 15:27
the_snip Messages postés 3 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 17 décembre 2009 - 17 déc. 2009 à 18:08
Bonjour,
je suis débutant en C# (d'ailleurs dsl si je me suis tromper de thème en postant)

voila ce que je cherche faire :

je voudrais lorsque je clic sur un bouton, que mon logiciel retienne les positions de clic de souris dans des variables.

ensuite je voudrais reprendre les positions retenues précédemment puis faire en sorte que le programme clic tout seul,(automatiquement) sur ces postions.

Comment dois-je mis prendre ?

6 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
17 déc. 2009 à 15:48
Salut

Les clics que tu souhaites retenir, c'est des clics sur ton application ou sur n'importe quelle application de ton ordi ?

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
the_snip Messages postés 3 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 17 décembre 2009
17 déc. 2009 à 16:09
j'ai oublier de préciser dsl.

je voudrais enregistrer les clics sur l'écran, absolument tout l'écran.
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
17 déc. 2009 à 16:54
Ça ça risque d'être relativement dur. Il faudra capturer l'événement clic du système, puis le regénérer. Personnellement, je n'ai aucune idée de la/des librairie(s) à utiliser. Mais je doute très fortement que ce soit possible en code managé.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 déc. 2009 à 17:14
Salut, oui en managé ça risque d'être un peu plus compliqué.. Pour "capturer" les évènements de la souris il faut mettre en place un hook global, voir dans l'API Win32 la fonction SetWindowsHookEx ( y'a un tas d'exemple sur le site ) ou RawInput ( il y a un wrapper managé sur le site ) et pour générer les évènements c'est la fonction SendInput ( là encore il y'a pleins d'exemples dans le forum ).

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 déc. 2009 à 17:39
Voilà en quelques lignes comment obtenir la position de la souris suite à un clique avec la lib RawInput.NET :

public partial class Form1 : Form
{
    private TextBox tb = null;

    public Form1( )
    {
        InitializeComponent( );

        tb = new TextBox( );
        tb.Parent = this;
        tb.Multiline = true;
        tb.Dock = DockStyle.Fill;

        this.TopMost = true;

        RawDevice.RegisterRawDevices( 0x01, 0x02, InputMode.BackgroundMode );
        RawDevice.RawInput += new EventHandler <RawInputEventArgs >( RawDevice_RawInput );
    }

    protected override void OnFormClosed( FormClosedEventArgs args )
    {
        base.OnFormClosed( args );
        RawDevice.UnregisterRawDevices( 0x01, 0x02 );
    }

    private void RawDevice_RawInput( object sender, RawInputEventArgs args )
    {
        if ( args.Handle == IntPtr.Zero )
            return; // Device virtuel.

        try
        {
            MouseData mouseData = ( MouseData )args.GetRawData( );

             if ( ( mouseData.State & MouseState.AbsoluteMode ) == MouseState.AbsoluteMode )
                return; // Un périphérique simule une souris en mode absolue.

            if ( mouseData.ButtonState == MouseButtonState.LeftUp )
            {
                tb.AppendText( Cursor.Position + "\r\n" );
            }
        }
        catch
        {
            // ..
        }
    }
}
the_snip Messages postés 3 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 17 décembre 2009
17 déc. 2009 à 18:08
grand merci a vous tous ! je teste sa de-suite.
Rejoignez-nous