[C#] simuler un click souris [résolu]

simuler un click souris [résolu] [C#] - C#/.NET managed - Programmation

Marsh Posté le 27-10-2008 à 16:50:13    

bonjour,
 
je suis en train de développer un 'AutoFire' pour la souris dont le but est que si j'appuis sur la touche ALT du clavier, on rentre dans une boucle qui 'click' 15 fois pas secondes, de la, a nous de pointer ou il faut !
 
J'ai cherché sur la toile comment on pourrait 'simuler' un click gauche de la souris dans une boucle while à partir d'une instruction mais en vain...
 
je compte sur votre expérience pour m'éclairer !   merci d'avance !!


Message édité par psykorps le 29-10-2008 à 16:04:03
Reply

Marsh Posté le 27-10-2008 à 16:50:13   

Reply

Marsh Posté le 27-10-2008 à 19:17:10    

je crois qu'il y a un "this.InvokeOnClick(...)" sur les objets de type form ou control.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Marsh Posté le 27-10-2008 à 19:28:34    

dacord merci beaucoup pour ta réponse, je vais essayer ca !

Reply

Marsh Posté le 27-10-2008 à 20:39:18    

Cela ne marche pas, cette fonction sert a effectuer l'abonnement OnClick sur un control.
peut-etre doit on passer par un hook?

Reply

Marsh Posté le 28-10-2008 à 13:31:19    

non il déclenche bien l'évènement click sur le contrôle. L'abonnement à l'évènement ne se fait pas du tout comme cela.  
 
http://msdn.microsoft.com/fr-fr/li [...] click.aspx


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Marsh Posté le 28-10-2008 à 14:30:06    

ah oui effectivement pardon
cependant je ne comprends pas comment cela fonctionne ^^'
je voudrais que ca clique à l'endroit ou il y a la souris à lécran et non déclancher la méthode onClick d'un control

Reply

Marsh Posté le 28-10-2008 à 17:50:17    

psykorps a écrit :

ah oui effectivement pardon
cependant je ne comprends pas comment cela fonctionne ^^'
je voudrais que ca clique à l'endroit ou il y a la souris à lécran et non déclancher la méthode onClick d'un control


Faut sortir du vrai C avec un hook sur le pilote c'est tout.
 
Ceci dit tout ça pour cheaté c'est fort.
D'autant plus que c'est pas la rapidité du click qui fait la rapidité du tir du jeu ;)


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 28-10-2008 à 17:53:16    

c'est pas pour cheater...non mais didonc ^^
pourais tu m'expliquer comment utiliser un hook et ou le trouver stp??

Reply

Marsh Posté le 28-10-2008 à 17:56:12    

http://blogs.msdn.com/toub/archive [...] 89468.aspx  
 
peut etre une piste sans sortir le C ;)


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 28-10-2008 à 22:59:02    

Voila j'ai trouvé la solution je vous pose le code en espérant que ca poura en aider plus d'un !  
 

Code :
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Runtime.InteropServices;
  4. public class Form1 : Form
  5. {
  6.    [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
  7.    public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
  8.    private const int MOUSEEVENTF_LEFTDOWN = 0x02;
  9.    private const int MOUSEEVENTF_LEFTUP = 0x04;
  10.    private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
  11.    private const int MOUSEEVENTF_RIGHTUP = 0x10;
  12.    public Form1()
  13.    {
  14.    }
  15.    public void DoMouseClick()
  16.    {
  17.       //simule un clic a la position courante du curseur
  18.       int X = Cursor.Position.X;
  19.       int Y = Cursor.Position.Y;
  20.       mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
  21.    }
  22.    //reste du code de votre application
  23. }


Message édité par psykorps le 28-10-2008 à 23:13:36
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed