Simulation du clavier/souris

Description

Voila deux fonctions une pour simuler un clic gauche de souris (SimulerMouse) qui prend deux argument les coordonnées x et y de la position du pointeur

la deuxième fonction : SimulerKey permet de simuler une ou plusieurs combinaison de touches

ex: simulation de la touche 'r' : SimulerKey(0x52, 0, 0, 1);
simulation de la combinaison de touches : ALT+ENTRER : SimulerKey(VK_MENU, VK_RETURN, 0, 2);
simulation de la combinaison de touches : CTRL+ALT+à (touche @) : SimulerKey(VK_CONTROL, VK_MENU, 0x30, 3);

les code des touches sont disponible ici :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/UserInput/VirtualKeyCodes.asp

Source / Exemple :


void SimulerMouse(int x, int y)
{
  // Définir la position du curseur de al souris
  SetCursorPos(x, y);

  // Simule l'action de clic du bouton gauche de la souris
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);

  // Simule l'action de relâcher du bouton gauche de la souris
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
//---------------------------------------------------------------------------

void SimulerKey(int x, int y, int z, int nbre)
{
  if(nbre == 1)
  {
    switch(x)
    {
    // Lettres
      case 'a':
        x = 0x41;
        break;
      case 'b':
        x = 0x42;
        break;
      case 'c':
        x = 0x43;
        break;
      case 'd':
        x = 0x44;
        break;
      case 'e':
        x = 0x45;
        break;
      case 'f':
        x = 0x46;
        break;
      case 'g':
        x = 0x47;
        break;
      case 'h':
        x = 0x48;
        break;
      case 'i':
        x = 0x49;
        break;
      case 'j':
        x = 0x4a;
        break;
      case 'k':
        x = 0x4b;
        break;
      case 'l':
        x = 0x4c;
        break;
      case 'm':
        x = 0x4d;
        break;
      case 'n':
        x = 0x4e;
        break;
      case 'o':
        x = 0x4f;
        break;
      case 'p':
        x = 0x50;
        break;
      case 'q':
        x = 0x51;
        break;
      case 'r':
        x = 0x52;
        break;
      case 's':
        x = 0x53;
        break;
      case 't':
        x = 0x54;
        break;
      case 'u':
        x = 0x55;
        break;
      case 'v':
        x = 0x56;
        break;
      case 'w':
        x = 0x57;
        break;
      case 'x':
        x = 0x58;
        break;
      case 'y':
        x = 0x59;
        break;
      case 'z':
        x = 0x5a;
        break;

    // Chiffres avec le vérouillage numérique
      case '0':
        x = 0x60;
        break;
      case '1':
        x = 0x61;
        break;
      case '2':
        x = 0x62;
        break;
      case '3':
        x = 0x63;
        break;
      case '4':
        x = 0x64;
        break;
      case '5':
        x = 0x65;
        break;
      case '6':
        x = 0x66;
        break;
      case '7':
        x = 0x67;
        break;
      case '8':
        x = 0x68;
        break;
      case '9':
        x = 0x69;
        break;
      case '.':
        x = 0x6e;
        break;

    // Chiffres au dessus des lettres
      case 'à':
        y = 0x30;
        break;
      case '&':
        y = 0x31;
        break;
      case 'é':
        y = 0x32;
        break;
      case '"':
        y = 0x33;
        break;
      case '\'':
        y = 0x34;
        break;
      case '(':
        y = 0x35;
        break;
      case '-':
        y = 0x36;
        break;
      case 'è':
        y = 0x37;
        break;
      case '_':
        y = 0x38;
        break;
      case 'ç':
        y = 0x39;
        break;
      default:
        break;
    }
  }

  if(nbre == 2)
  {
    switch(y)
    {
    // Lettres
      case 'a':
        y = 0x41;
        break;
      case 'b':
        y = 0x42;
        break;
      case 'c':
        y = 0x43;
        break;
      case 'd':
        y = 0x44;
        break;
      case 'e':
        y = 0x45;
        break;
      case 'f':
        y = 0x46;
        break;
      case 'g':
        y = 0x47;
        break;
      case 'h':
        y = 0x48;
        break;
      case 'i':
        y = 0x49;
        break;
      case 'j':
        y = 0x4a;
        break;
      case 'k':
        y = 0x4b;
        break;
      case 'l':
        y = 0x4c;
        break;
      case 'm':
        y = 0x4d;
        break;
      case 'n':
        y = 0x4e;
        break;
      case 'o':
        y = 0x4f;
        break;
      case 'p':
        y = 0x50;
        break;
      case 'q':
        y = 0x51;
        break;
      case 'r':
        y = 0x52;
        break;
      case 's':
        y = 0x53;
        break;
      case 't':
        y = 0x54;
        break;
      case 'u':
        y = 0x55;
        break;
      case 'v':
        y = 0x56;
        break;
      case 'w':
        y = 0x57;
        break;
      case 'x':
        y = 0x58;
        break;
      case 'y':
        y = 0x59;
        break;
      case 'z':
        y = 0x5a;
        break;

    // Chiffres au dessus des lettres
      case '0':
        y = 0x30;
        break;
      case '1':
        y = 0x31;
        break;
      case '2':
        y = 0x32;
        break;
      case '3':
        y = 0x33;
        break;
      case '4':
        y = 0x34;
        break;
      case '5':
        y = 0x35;
        break;
      case '6':
        y = 0x36;
        break;
      case '7':
        y = 0x37;
        break;
      case '8':
        y = 0x38;
        break;
      case '9':
        y = 0x39;
        break;
      default:
        break;
    }
  }

  if(nbre == 3)
  {
    switch(z)
    {
    // Chiffres au dessus des lettres
      case '@':
        z = 0x30;
        break;
      case '~':
        z = 0x32;
        break;
      case '#':
        z = 0x33;
        break;
      case '{':
        z = 0x34;
        break;
      case '[':
        z = 0x35;
        break;
      case '|':
        z = 0x36;
        break;
      case '`':
        z = 0x37;
        break;
      case '\\':
        z = 0x38;
        break;
      case '^':
        z = 0x39;
        break;
      default:
        break;
    }
  }

	keybd_event(x,0,0,0);
  if(nbre==2 || nbre ==3)
	  keybd_event(y,0,0,0);
  if(nbre==3)
  {
	  keybd_event(z,0,0,0);
	  keybd_event(z,0,KEYEVENTF_KEYUP,0);
  }
  if(nbre==2 || nbre ==3)
	  keybd_event(y,0,KEYEVENTF_KEYUP,0);
	keybd_event(x,0,KEYEVENTF_KEYUP,0);
}
//---------------------------------------------------------------------------

Conclusion :


Le code m'a l'air assez simple je l'ai fait parce que j'ai eu du mal a trouver comment cela marche.

Si cela peut aider des jeunes développeurs tant mieux.

++ Nexus

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.