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

Windows Forms Discussion :

[C#] Simuler un Click souris [Trucs & Astuces]


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut [C#] Simuler un Click souris
    Bonjour les gens, je cherche un moyen de simler les événements de la souris : faire cliquer la souris peut importe ou elle est. il faut que ca puisse marcher dans nymporte quelle app, j'ai deja trouvé comment faire en VB mais ca m'interesse pas. ensuite j'ai lu des posts qui parlent de SendMessage mais j'ai pas trop compris.
    merci bcp
    Prends un dany ca ira mieux

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Que veux-tu dire pa simuler le clic de la souris ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    c'est tout simple, je fais une apli qui fais bouger la souris, et l'utilitée de la souris c'est de cliquer .. donc je voudrais juste envoyer l'info "la souris clique" au pc sans actuellement toucher la souris, ni une touche du clavier ni rien, c'est juste lorsque certains fais sont valide then -> clic souris.

    le top serait : lorsque c vrai -> mousedown = true ( un truc dans le style c juste pour expliquer )
    et hop hold jusqu'a ce que ca ne soit plus vrai. genre when false back to mouseup.
    je suis sur que je suis super pas clair mais c'est toujours dur d'expliquer des machins qui sont clairs pour vous...
    allé voici un algo bidon
    if ( prop == true )
    envoyer mouse down; ( et changer les propriétés de la souris pour qu'elle soit hol ddown )
    else
    envoyer mouse up; ( enlever el hold )

    je sais pas si c mieux ..

    merci en tout cas fry
    Prends un dany ca ira mieux

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu dis que la souris se déplace déjà toute seule ? Alors pourquoi tu utilises pas l'evenement MouseEnter sur tes boutons ?


    Ca pourrait peut-etre t'aider... parce que sinon, simuler le clic, je vois pas désolé

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    euh si c'est sur n'importe quel controle visible à l'écran, à mon avis
    faut que tu récupères la liste des handlers des applications courantes, et que tu explores jusqu'à ce que tu trouves le controle actif et en dessous de ta position de souris. et après il faut raiser l'event.
    c'est juste une idée, je l'ai jamais fait mais à priori je pense que c'est comme ça qu'il faut faire si les controles sont en dehors ton application c#. et là oui faut sans doute utiliser une api win du style sendmessage.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    il me sembait avoir deja répondu .. enfin

    oui le SendMessage me parais être la solution, seulement je ne comprends pas comment ça marche.. enfin ca doit bien être écrit qq part, je trouverais un jour ou l'autre the sooner the better but si qqun a une url a filer ou un bout de code a copier

    merci

    [Merci de regarder tes messages privés - freegreg]
    Prends un dany ca ira mieux

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    essaye déjà ca:
    http://vbnet.mvps.org/index.html?code/intrinsic/buttonpress.htm

    et sinon:
    http://www.google.com/search?sourceid=navclient&ie=UTF-8&oe=UTF-8&q=simulate+click+sendmessage

    (le premier lien vient du 3e resultat de google !)

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    moi j'avais plutot ca :
    au mois ca avait l'avantage d'être en C# puisque c'est ce qui m'interresse et puis pourquoi toutes les recherches tombent sur du VB ? hein ?

    http://www.experts-exchange.com/Programming/Programming_Languages/C_Sharp/Q_20842105.html

    enfin ce lien il est bien mais j'ai une erreur concernant le GetFocus()
    ntPtr currentHandle = GetFocus(); //mfc pinvoke call returns current active window
    apparemment c du mfc mais la je me perds .. pourquoi c pas facill comme en VB et utilisable en C# :'(
    enfin je vais surement trouver, tout du moins j'éspère
    Prends un dany ca ira mieux

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    utilise la Win32 API:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    VOID mouse_event(
        DWORD dwFlags,	// flags specifying various motion/click variants
        DWORD dx,	// horizontal mouse position or position change
        DWORD dy,	// vertical mouse position or position change
        DWORD dwData,	// amount of wheel movement
        DWORD dwExtraInfo 	// 32 bits of application-defined information
       );
    [Balise [Code] ajoutée par freegreg]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    ca a l'air super chouette, mais sans vouloir être ennuyant, car c'est super gentil, j'aurais besoin de plus de details.
    n'étant pas super fort, ai-je besion d'un Dll import ?
    et cette fonction je dois l'implementer ou est elle dans le DLL, dernier point, je n'arrive pas a trouver les dwFlags..

    merci de bien vouloir détailler un peu plus merci TaGaDaPaF

    sinon je suis plus dans le modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    using System.Runtime.InteropServices;
     
    [DllImport("user32.dll")]
    public static extern int SendMessage(          
    	IntPtr hWnd,
                    uint Msg,
    	IntPtr wParam,
    	IntPtr lParam       );
    que j'ai trouvé ailleur avec l'appel suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void LeftClick(IntPtr handle)
    		{
    			SendMessage(handle, WM_LBUTTONDOWN, 0, 0);
    			SendMessage(handle, WM_LBUTTONUP, 0, 0); 
    		}
    et le handle est récupérer grace a GetFocus, m'ai j'ai un problème pour l'utilisation de GetFocus, voila si qqun peu m'éclaisir le tête
    Prends un dany ca ira mieux

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    OK Tagada, send_message a l'air cool même si d'aprés MSDN, ilifaut passer a SendInput ( mais ca a l'air plus compliqué ! )
    bon j'en arrive a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [DllImport("user32.dll")]
    		public static extern void mouse_event (MouseEvents dwFlags,long dx, long dy,long cButtons,long dwExtraInfo);
    mais la les flags genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MOUSEEVENTF_LEFTDOWN
    MOUSEEVENTF_LEFTUP
    ne sont pas reconnus, j'ai vu sur plusieurs sites dont certains en russe ou en japonais ( j'ai eu du mal a suivre les commentaires ^^ ) que les gens font des alias genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     MOUSEEVENTF_LEFTDOWN = 0x2;
     MOUSEEVENTF_LEFTUP = 0x4;
    ou
    private const uint WM_MOUSEFIRST    = 0x0200;
    private const uint WM_MOUSEMOVE     = 0x0200;
    tirés de deux sites differents .. je commence a psychotter
    Prends un dany ca ira mieux

  12. #12
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut oh yeah
    sbon, j'ai trouvé, merci.
    Prends un dany ca ira mieux

  13. #13
    Membre du Club
    Profil pro
    Boss
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Boss

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    Et après? Tu as la solution, donne là! Je la cherche aussi :-(

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Salut,

    oula, tu l'as sorti de loin ce thread. =D

    Bref, regarde ici, tu trouveras surement les reponses à tes questions.

    Bon courage.

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

Discussions similaires

  1. simuler un click souris sur un CButton pb
    Par Emyleet dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2008, 09h16
  2. Simuler Click Souris
    Par Scuz60 dans le forum MFC
    Réponses: 10
    Dernier message: 23/08/2007, 14h07
  3. simuler le click gauche de la souris
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/12/2006, 20h55
  4. Simuler le click de la souris sur le focus d'un form ?
    Par HookerSeven dans le forum Access
    Réponses: 9
    Dernier message: 24/02/2006, 22h32
  5. Simulation de click souris
    Par Nats dans le forum Windows
    Réponses: 5
    Dernier message: 07/02/2005, 20h51

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