begin process at 2012 02 05 04:32:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > SIMULATION DU CLAVIER/SOURIS

SIMULATION DU CLAVIER/SOURIS


 Information sur la source

Note :
8,5 / 10 - par 4 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Classé sous :simuler, clavier, souris, mouseevent, keybdevent Niveau :Débutant Date de création :20/05/2005 Date de mise à jour :11/06/2005 19:36:06 Vu / téléchargé :17 341 / 668

Auteur : Steph115

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

 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?ur l=/library/en-us/winui/winui/WindowsUserInterface/ UserInput/VirtualKeyCodes.asp

Source

  • 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);
  • }
  • //---------------------------------------------------------------------------
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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

20 mai 2005 11:47:44 :
Rajout du ',3' dans la presentation du code.
11 juin 2005 19:36:06 :
Dans cette mise à jour j'ai ajouté un switch sur les x, y, z pour que l'on puisse remplacer les codes des touches courantes par leur symboles. Exemple : 'r' '5' 'ç' '(' 'k' '@' ....

 Sources du même auteur

Source avec Zip REGISTRE ET MENU "SOURCE DE DONNÉES (ODBC)"

 Sources de la même categorie

Source avec Zip Source avec une capture UNE LISTE HÉTÉROGÈNE DOUBLEMENT CHAINÉE par pgl10
Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ... par pgl10
Source avec Zip PETITE CLASSE DE GESTION DES PROCESSUS SOUS WINDOWS par wisar
Source avec Zip KEYLOGGER AVEC NOM DU PROCESSUS ET DE LA FENETRE QUI A LE FO... par wisar
Source avec Zip LINUX USB BOOT LEGER par patatalo

 Sources en rapport avec celle ci

QWERTY - AZERTY AVEC SDL, UNE ALTERNATIVE par Scheb
Source avec Zip Source avec une capture RÉARRANGER LES LIGNES D'UNE LISTVIEW À LA SOURIS (WIN32 API) par racpp
Source avec Zip Source avec une capture MOUSECONTROL par NeoUmbrella
Source avec Zip DÉTOURNER LA FRAPPE CLAVIER par racpp
Source avec Zip SIMULER LES TOUCHES CLAVIER par BruNews

Commentaires et avis

Commentaire de dragon2222 le 20/05/2005 17:53:43

Le truc chouette a faire maintenant, c'est de faire un programme qui affiche un clavier et une souris.
On pourrait alors le contrôler soit le clavier avec la souris, soit la souris avec le clavier (Pratique quand ma mère me prive de PC :( )

je vais déja essayer sans l'interface graphique :)

Commentaire de Steph115 le 20/05/2005 17:56:14

Dans ce cas la si tu as la souris et que tu es sous WindowsXP tu peut faire :

Demarrer->Executer->osk.exe

C'est un clavier Virtuel utilisable avec la souris.

:D:D:D

++ Nexus

Commentaire de dragon2222 le 20/05/2005 18:33:17

Ok c'est nikel :)
donc voila une sorte de souris en mode consol.
Le problème, c'est qu'il faudrait qu'elle soit toujours active parceque si on clic et qu'après sa marche plus ...

Voilà son code, avec la fonction de Steph

#include <windows.h>
#include <stdio.h>
#include <conio.h>

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

void MouseClicGauche()
{
  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 MouseClicDroit()
{
  mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
  // Simule l'action de relâcher du bouton droit de la souris
  mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
}

//---------------------------------------------------------------------------

void main()
{
unsigned int ChoixClSr = 0;

int PosSourisX = 50;
int PosSourisY = 50;

char Direction;

int Vitesse = 10;

bool Encore;

system("cls");

while ( Encore )
{
Direction = getch();

switch(Direction)
{
case 'z' :
PosSourisY = PosSourisY - Vitesse;
break;
case 's' :
PosSourisY = PosSourisY + Vitesse;
break;
case 'd' :
PosSourisX = PosSourisX + Vitesse;
break;
case 'q' :
PosSourisX = PosSourisX - Vitesse;
break;
case 'y' :
Vitesse++;
break;
case 'u' :
Vitesse--;
break;
case 'h' :
MouseClicGauche();
break;
case 'j' :
MouseClicDroit();
break;
case 'm' :
Encore = false;
break;
default :
break;
}

system("cls");
printf("Vitesse : %d\n", Vitesse);
printf("PositionX : %d\n", PosSourisX);
printf("PositionY : %d\n", PosSourisY);

SimulerMouse(PosSourisX, PosSourisY);
}
}

Commentaire de hwoarang le 08/04/2007 22:10:11

Merci beaucoup. Cette source est vraiment tres utile...

Commentaire de ReqL le 16/05/2007 00:38:43

Bonjour,
J'ai étudié ta (très bonne) source et je suis dans l'incapacité de simuler la touche '/' ...
Quelqu'un peut m'aider ? J'ai fait des test dans tout les sens, rien ne marche :s

Commentaire de kenjomaster le 27/11/2007 21:22:19 9/10

merci ca m a aidé

Commentaire de Steph115 le 28/11/2007 14:54:09

Salut ReQL
La méthode pour simuler un / est de simuler un shift et un :

Désolé pour le contre temps en espérant que tu as trouvé avant.

Commentaire de rob57530 le 16/08/2009 15:35:06

Super source merci beaucoup!! :)

Commentaire de rob57530 le 29/09/2009 21:26:02

Super, mais les codes des touches se trouvent
<a href="http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx"> ici</a>

Commentaire de Zestyr le 12/12/2009 12:57:25

Un grand MERCI, cette source était ce qu'il me fallait !

Quelques petites questions:
        Dans keybd_event(param1,param2,param3,param4);
A quoi correspondent les 3 derniers paramètres?

         Comment simuler une combinaison de touches ex: Ctrl+C  ou Shilft+A? (je pense que les 2questions sont iées)

Merci de votre réponses,

Cordialement Zestyr  

Commentaire de Steph115 le 12/12/2009 21:29:42

Bonjour,

Cela fait toujours plaisir 5 ans après de voir que l'intérêt est toujours présent.

En regardant les exemples de la source on peut voir que le dernier paramètre indique combien de touches sont présentes dans la combinaison.
Lorsqu'une touche n'est pas utilisé alors elle vaut 0.
Les exemples ci-dessous reprennent clairement toutes les combinaisons de touches possibles.

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);


Bon code,
Stéphane.

Commentaire de Zestyr le 12/12/2009 23:54:22

Ce n'était pas ma question.
En relisant le code j'ai compris deux truks:
                          - pourquoi mon ordi buguait après que je lançait mes tests.
                          - comment simuler une combinaison.

Enfait chaque touche enfoncé le reste tant qu'on ne simule pas un Keyup!

En code pur SimulerKey(VK_CONTROL, VK_MENU, 0x30, 3); donerais ça:
    keybd_event(VK_CONTROL,0,0,0); //Touche CTRL enfoncé
    keybd_event(VK_MENU,0,0,0); //touche ALT enfoncé
    keybd_event(0x30,0,0,0); // touche à enfoncé
    keybd_event(0x30,0,KEYEVENTF_KEYUP,0); // touche à relevé
    keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0); // touche Alt relevé
    keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0); // touche CTRL relevé

En chch sur msdn j'ai trouver ça http://msdn.microsoft.com/en-us/library/aa928103.aspx

Dans keybd_event(param1,param2,param3,param4);
               - param1 est le code (ascii ou hexadecimal) de la touche à enfoncer.
               - param3 est l'état de la touche (enfoncé par default)

Les 2 autres paramètres (param2 et param4) j'ai pas bien compris à quoi ça correspondait.

Sauriez vous me répondre ?

Cordialement Zestyr

Commentaire de Steph115 le 13/12/2009 01:43:09

Ah je t'assure que la source marche comme ça.

Je fais un key down et un key up tu peux faire une touche arobas (CTRL+ALT+à) en une seule ligne notamment par cette constante "KEYEVENTF_KEYUP".

Les keyup se font à cet endroit :
# 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);

Commentaire de Zestyr le 13/12/2009 12:34:09

On est bien daccord !

Sur msdn il ya ça

VOID keybd_event(
  BYTE bVk,
  BYTE bScan,
  DWORD dwFlags,
  DWORD dwExtraInfo
);

bVk
[in] Specifies a virtual-key code. The code must be a value in the range 1 to 254. For a list of virtual-key codes, see Translating Scan Codes to Virtual-Key Codes.

bScan
[in] Specifies a hardware scan code for the key.

dwFlags
[in] Specifies various aspects of function operation. An application can use any combination of the following predefined constant values to set the flags.

dwExtraInfo
[in] Specifies an additional 32-bit value associated with the keystroke.

Et j'ai pas compris a quoi correspondait le deuxième et troisième argument de cette fonction (bScan et dwExtraInfo)

Commentaire de Steph115 le 13/12/2009 18:44:12

Autant pour moi ;)

La documentation MSDN laisse comme exemple pour dwFlags ceci :
[in] Specifies various aspects of function operation. This parameter can be one or more of the following values.
KEYEVENTF_EXTENDEDKEY
    If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224).
KEYEVENTF_KEYUP
    If specified, the key is being released. If not specified, the key is being depressed.

En gros soit il rajoute un prefix au code de la touche avec la valeur 0xE0.
(A ma connaissance je ne connais pas cette utilité).
Soit il utilise la variable KEYEVENTF_KEYUP pour relâcher le bouton.
La MSDN utilise pour appuyer sur un bouton : KEYEVENTF_EXTENDEDKEY | 0
et pour relacher le bouton : KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP

le fonction bScan est la même variable que bVk sauf qu'il indique le code en hexa tandis que bVk peut utiliser des touches avec leur define (ex: VK_.....)
Voici un exemple pour le bouton vérouillage numérique : (VK_NUMLOCK, 0x45, 0, 0)
On lui a spécifié ici la valeur "virtuelle" VK_NUMLOCK ainsi que ca valeur en hexa 0x45

Bonne soirée,
Stéphane.

Commentaire de Zestyr le 14/12/2009 19:58:19

En gros bScan ça sert à rien!

Et dwExtraInfo c'est quoi?

Merci et bonne soirée ;p

Commentaire de Steph115 le 14/12/2009 20:55:38

Extrainfo ca sert pas a grand chose.
Je ne saurais pas te le dire avec certitude mais c'est une histoire de variable que tu associe en plus de ta valeur du clavier.

Commentaire de Zestyr le 14/12/2009 22:37:54

Ah okay enfait seul 2 arguments dans cette fonction sont utiles
xD

Merci pour ses explications presque 5 ans après !
Ca te replonge dans le BON VIEUX TEMPS n'est-ce pas ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Simuler la pression d'une touche du clavier [ par sebastienbro ] J'utilise c++ builder 6, et j'aimerais simuler la pression de la touche Entrée. Mais voilà, comment faire !! Existe t'il une fonction qui fait ça auto bloquer le clavier et la souris [ par BsEtZeOpLhD ] Salut.Je suis sous winXP et j'utilise VC++.Je chercher a bloquer le clavier ou au moins quelques touches (echap, enter, ctrl, alt, suppr, windows) ain simuler une entrée au clavier [ par HCJarod ] Salut,est-il possible (et si oui comment) de faire croire à un programme que quelqu'un tape sur une touche? Un exemple pour fixé les idées : un progra simuler le deplacement de la souris [ par Adeon ] Salut!J'aimerai savoir comment simuler le deplacement de la sourisvers la gauche, la droite, le haut, le bas.Salut Adeon <img src=/imgs2/smile_cool.gi directinput [ par frdestroyers27 ] Bounjours a tous!bon mon probleme est le suivant!j'utilise directinput pour le clavier et la souris!tout fonctionne lorsque je clique avec la souris l simuler touches clavier [ par janus_dualite ] Bonjour,Je ne parviens pas a simuler certaines touches du clavier comme "_", ".", "@" a l'aide de keybd_event, alors qu'il n'y a aucun probleme par ra Mouvement souris et clavier [ par plom ] Bonjour, avant de me mettre &#224; direct input, j'aimerai faire un tout petit truc avec directement les messages windows.J'ai un probl&#232;me avec l Simuler mon clavier a partir de mon site web [ par supergrey ] Salut, je voudrais savoir comment faire pour simuler des appuis sur les touches de mon clavier a partir d'une page html sur&nbsp;mon site web.Je sais Deplacement de la souris [ par gus2647 ] Bonjour, Je souhaiterai pouvoir deplacer mon cursuer à l aide des fleches du clavier..Comment je peux recuperer l evenement de la saisie d une touche probleme clavier/souris [ par TheReap ] Salut tout le mondeje vien d'acheter counter strike source je l&#233; instal&#233; aucun problemm&#233; une fois que j&#233; choisie un serveur ki me


Nos sponsors


Sondage...

Comparez les prix

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 : 0,733 sec (4)

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