begin process at 2012 02 10 06:29:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > SIMULER LA SOURIS

SIMULER LA SOURIS


 Information sur la source

Note :
8 / 10 - par 9 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :01/01/2004 Vu :11 049

Auteur : prokev

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

on montre comment: faire un click, detecter la position de la souris, bouger la souris et la rendre invisible/visible...

Source

  • #include <windows.h>
  • int STDCALL
  • WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
  • {
  • POINT pos; //espace pour loger les coordonnées
  • GetCursorPos(&pos); //loge les coordonnées (x,y) de la position initiale de la souris
  • ShowCursor(TRUE); //rendre la souris visible (je sait que ca sert a rien parce qu'elle l'est déja mais c'est a titre démonstratif) remplacer TRUE par FALSE pour la rendre invisible
  • #define X 200 //on peut metre une autre valeur pour agrandir ou diminuer le x mais la valeur doit etre plus grande ou egale a 100
  • //diagonale haut/gauche : bas/droite
  • for (int i=0; i<X; i+=X/100)
  • {
  • SetCursorPos(pos.x-X/2+i, pos.y-X/2+i); //place la souris a: position_initiale.(x_ou_y) - grandeur_du_X /2 + la_ou_on_est_randu_dans_la_boucle en x ET en y ce qui fait une diagonale
  • Sleep(5);
  • }
  • //diagonale bas/gauche : haut/droite
  • for (int i=X; i>0; i-=X/100)
  • {
  • SetCursorPos(pos.x+X/2-i, pos.y-X/2+i); //place la souris a: position_initiale.(x_ou_y) - grandeur_du_X /2 + la_ou_on_est_randu_dans_la_boucle en x ET en y ce qui fait une diagonale
  • Sleep(5);
  • }
  • //demander si on veut recommencer
  • if (MessageBox (NULL, "voulez vous recommencer?" , "SouriX", 0 + MB_YESNO + MB_ICONQUESTION)==IDYES)
  • { //si oui:
  • SetCursorPos(pos.x, pos.y); //remetre la souris a la position initialle
  • //simuler un double click gauche (remplacer: MOUSEEVENTF_LEFTDOWN par MOUSEEVENTF_RIGHTDOWN ou MOUSEEVENTF_RIGHTUP pour le boutton droit)
  • mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //boutton gauche appuyer
  • mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //boutton gauche relacher
  • Sleep(3); //les ordinateurs lents pouraint ne pas comprendre le 2eme click sinon
  • mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //boutton gauche appuyer
  • mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //boutton gauche relacher
  • //normalement on a parti le programme en cliquant/double_cliquant dessus donc la position_initiale est sur le fichier et le programme redouble clique dessus :)
  • } //bon je sais un goto ou une boucle aurait suffi mais c'est pour vous montrer d'autres commande ;)
  • return 0;
  • }
#include <windows.h>

int STDCALL
WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
  POINT pos; //espace pour loger les coordonnées
  GetCursorPos(&pos); //loge les coordonnées (x,y) de la position initiale de la souris
  
  ShowCursor(TRUE); //rendre la souris visible (je sait que ca sert a rien parce qu'elle l'est déja mais c'est a titre démonstratif) remplacer TRUE par FALSE pour la rendre invisible 

  #define X 200   //on peut metre une autre valeur pour agrandir ou diminuer le x mais la valeur doit etre plus grande ou egale a 100
  
  //diagonale  haut/gauche : bas/droite
  for (int i=0; i<X; i+=X/100)
      {
      SetCursorPos(pos.x-X/2+i, pos.y-X/2+i);  //place la souris a: position_initiale.(x_ou_y) - grandeur_du_X /2 + la_ou_on_est_randu_dans_la_boucle  en x ET en y ce qui fait une diagonale
      Sleep(5);
      }
  
  //diagonale  bas/gauche : haut/droite
  for (int i=X; i>0; i-=X/100)
      {
      SetCursorPos(pos.x+X/2-i, pos.y-X/2+i);  //place la souris a: position_initiale.(x_ou_y) - grandeur_du_X /2 + la_ou_on_est_randu_dans_la_boucle  en x ET en y ce qui fait une diagonale
      Sleep(5);
      }

  
  //demander si on veut recommencer
  if (MessageBox (NULL, "voulez vous recommencer?" , "SouriX", 0 + MB_YESNO + MB_ICONQUESTION)==IDYES)
     { //si oui:
     SetCursorPos(pos.x, pos.y); //remetre la souris a la position initialle

     //simuler un double click gauche (remplacer: MOUSEEVENTF_LEFTDOWN par MOUSEEVENTF_RIGHTDOWN ou MOUSEEVENTF_RIGHTUP pour le boutton droit)
     mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //boutton gauche appuyer
     mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //boutton gauche relacher

     Sleep(3); //les ordinateurs lents pouraint ne pas comprendre le 2eme click sinon

     mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //boutton gauche appuyer
     mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //boutton gauche relacher

     //normalement on a parti le programme en cliquant/double_cliquant dessus donc la position_initiale est sur le fichier et le programme redouble clique dessus :)
     } //bon je sais un goto ou une boucle aurait suffi mais c'est pour vous montrer d'autres commande ;)

  return 0;
}

 Conclusion

vous allez me dire que faire des X avec une souris ca sert pas a grand choses... bein vous avez raison :) ... mais le but c'etait de montrer a faire un max de choses avec la souris...

ps: jai fait cette source sur demande...


 Sources du même auteur

FERMER L'ORDINATEUR
Source avec Zip Source avec une capture JEU D'AVENTURE EN MODE TEXTE...
Source avec Zip CREATEUR/LECTEUR DE MESSAGES DEFILANT V2.0
RECTANGLE MULTICOLORE RÉTRÉCISSANT
PETIT JEU MULTIJOUEUR DU GENRE FIGHT CLUB V3.0

 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de Thaeron le 01/01/2004 22:57:40

Yes merci prokev c'est sympas de ta part =)
**Le savoir appartient a tout le monde**

Commentaire de prokev le 01/01/2004 23:39:19

pas de prob ;) ... si kelqu'un d'autre aprécie ma source ou trouve un bug ou quelque chose a améliorer faites moi le savoir!!!
@+

Commentaire de stefdem le 03/01/2004 16:04:45

Merci.
Un code clair et concis.
Très bien.

Commentaire de LordBob le 04/01/2004 19:19:35

c'est tres instructif comme source... elle m'a permit de découvrir de nouvelles choses !!!
tres bonne sources avec quelques commentaires, que demandez de plus?

Commentaire de Hellaynnea le 09/01/2004 08:02:25

Salut, sympas la source :) juste un truc, c pour rendre la souris visible/invisible
la fonction showcursor incrémente/décrémente un compteur, TRUE incrémente le compteur de "visibilité" de la souris et FALSE décrémente le compteur. lorsque le compteur atteint 0 ou moins il n'est plus affiché. Donc pour s'assurer que le curseur est bien rendu invisible il faudrait faire un truv du genre :
while(ShowCursor(hCursor,TRUE) &lt;= 0);   //pour afficher le cursor
while(ShowCursor(hCursor,FALSE) &gt; 0); //pour effacer le cursor
++

Commentaire de prokev le 09/01/2004 23:53:29

merci pour vos commentaires (c'est toujour interressant d'avoir un "feedback" du bon et du mauvais de ce qu'on fait)
jaimerais aussi savoir si il y a une librairie ou une commande qui permet de savoir si la souris pointe ou non dans telle ou telle fenetre... si il n'y en a pas je m'y metterai!

PS:
lordbob: la lune ;)
hellaynnea: merci du conseil je men souviendrai ...

Commentaire de Hellaynnea le 10/01/2004 00:03:49

Pour une fonctions spécifique a la souris je sais pas mais je sais qu'il existe une fonction (cf MSDN) : HWND WindowFromPoint(POINT pt); qui te retourne le handle vers la première fenêtre valide (non disable et visible) qui est sous le point pt (que tu peu récup avec GetCursorPos mais ca tu dois déja le savoir)
++

Commentaire de mat74 le 18/01/2004 12:08:31

salut

c'est exactement se que je cherche , sa va bien m'aider pr mon prochain prog .

@+

Commentaire de nightlord666 le 18/08/2005 08:05:13

Salut ! Je trouve ton code super mais ne serait-il pas plus simple de simuler un appui sur la touche entrée pour recommencer le programme ? En effet, l'application reste séléctionnée quand on l'execute. En plus, la souris peut etre mal placée par rapport à l'application(en éxécutant en appuyant sur entrée). Pourrais-tu me dire comment faire ça ?

Commentaire de badr07 le 19/08/2006 20:52:41

Super ta source!
10/10
l0l

Commentaire de Arsaw le 10/02/2008 14:41:49

Bonjour, je débute en c++ et je suis super intéressé par ce petit programme alors j'essaye de comprendre son fonctionnement. Mais avant tout je souhaiterai le compiler. Et la, gros probleme...

1>.\AutoMouse.cpp(5) : fatal error C1083: Impossible d'ouvrir le fichier include : 'iostream.h' : No such file or directory

Commentaire de Arsaw le 10/02/2008 14:47:02

en bidouillant un peu :

remplacer "#include "iostream.h""
par"#include <iostream>

using namespace std;"

je n'ai plus cette erreur, mais j'en ai une encore pire que je ne vois pas comment résoudre :( ?

1>AutoMouse.obj : error LNK2019: symbole externe non résolu __imp__GetAsyncKeyState@4 référencé dans la fonction _main
1>Souris.obj : error LNK2019: symbole externe non résolu __imp__GetCursorPos@4 référencé dans la fonction "public: int __thiscall Souris::x(void)" (?x@Souris@@QAEHXZ)
1>Souris.obj : error LNK2019: symbole externe non résolu __imp__SetCursorPos@8 référencé dans la fonction "public: bool __thiscall Souris::move(int,int)" (?move@Souris@@QAE_NHH@Z)
1>Souris.obj : error LNK2019: symbole externe non résolu __imp__mouse_event@20 référencé dans la fonction "public: bool __thiscall Souris::leftClick(int)" (?leftClick@Souris@@QAE_NH@Z)

si vous pouviez m'aider je vous en serai tres reconnaissant.

Commentaire de snpier wolf le 15/02/2008 08:33:06

bonjour,
braveau pour ce code il est trop :)
mais dis moi la fonction ShowCursor(FALSE);
fonctionne que pour le messageBox de fin, tu saurai pas comman fair pour rendre  la souris invisible pour toutes les fenêtres?

Commentaire de jaouaditm le 11/03/2009 23:15:56

merci
pour faire un click souris
GetKeyState(VK_LBUTTON)& Mask

Commentaire de Bartagus le 12/01/2011 16:32:54

Bonjour, je ne connais rien en programmation. J'accompagne des personnes en situation de handicap. Je cherche à permettre aux personnes de faire sur un seul bouton le clic gaughe et le droit.
Exactement à la manière de "One finger snap" sur mac.
http://www.old-jewel.com/onefingersnap/index.html

Il différencie le clic court du clic long. Un clic court équivaut au clic gauche. Un clic supérieur à 1,5 sec équivaut au clic droit.

Est-ce possible sous windows ? Pouvez-vous m'y aider ?

Merci d'avance

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,853 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales