begin process at 2012 02 12 10:25:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > SIMULER LES TOUCHES CLAVIER

SIMULER LES TOUCHES CLAVIER


 Information sur la source

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :simuler, touche, clavier Niveau :Débutant Date de création :14/10/2005 Date de mise à jour :06/04/2006 22:02:47 Vu / téléchargé :24 107 / 1 237

Auteur : BruNews

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note


 Description

Pour question récurrente sur forum.

Ouvrir une fenêtre notepad pour tester, pour cela que j'ai mis un Sleep(3000) on a le temps de mettre la notepad devant histoire qu'elle reçoive le texte.
2 versions dans zip, ansi et unicode, pour vérifier que va bon.
Renommer les exec en exe pour essayer sans avoir à compiler.

Source

  • void __stdcall kbdSimule(TCHAR *psz)
  • {
  • INPUT npt;
  • npt.ki.dwExtraInfo = npt.ki.time = 0;
  • npt.type = INPUT_KEYBOARD;
  • npt.ki.wVk = 0;
  • while(*psz) {
  • #ifdef UNICODE
  • npt.ki.wScan = (WORD) *psz;
  • #else
  • npt.ki.wScan = (WORD) (BYTE) *psz;
  • #endif
  • npt.ki.dwFlags = KEYEVENTF_UNICODE;
  • SendInput(1, &npt, sizeof(INPUT));
  • npt.ki.dwFlags = KEYEVENTF_UNICODE| KEYEVENTF_KEYUP;
  • SendInput(1, &npt, sizeof(INPUT));
  • psz++;
  • }
  • }
  • int WINAPI WinMain(HINSTANCE h, HINSTANCE x, LPSTR ystr, int z)
  • {
  • Sleep(3000);
  • kbdSimule("AEIOU àéïôù aeiou");
  • return 0;
  • }
void __stdcall kbdSimule(TCHAR *psz)
{
  INPUT npt;
  npt.ki.dwExtraInfo = npt.ki.time = 0;
  npt.type = INPUT_KEYBOARD;
  npt.ki.wVk = 0;
  while(*psz) {
#ifdef UNICODE
    npt.ki.wScan = (WORD) *psz;
#else
    npt.ki.wScan = (WORD) (BYTE) *psz;
#endif
    npt.ki.dwFlags = KEYEVENTF_UNICODE;
    SendInput(1, &npt, sizeof(INPUT));
    npt.ki.dwFlags =  KEYEVENTF_UNICODE| KEYEVENTF_KEYUP;
    SendInput(1, &npt, sizeof(INPUT));
    psz++;
  }
}

int WINAPI WinMain(HINSTANCE h, HINSTANCE x, LPSTR ystr, int z)
{
  Sleep(3000);
  kbdSimule("AEIOU àéïôù aeiou");
  return 0;
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   kbdAnsi
    •   release
      • kbdAnsi.execTélécharger ce fichier [Réservé aux membres club]22 528 octets
    • kbdAnsi.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier690 octets
    • kbdAnsi.ncbTélécharger ce fichier [Réservé aux membres club]27 648 octets
    • kbdAnsi.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier903 octets
    • kbdAnsi.suoTélécharger ce fichier [Réservé aux membres club]9 216 octets
    • kbdAnsi.vcprojTélécharger ce fichier [Réservé aux membres club]3 741 octets
  •   kbdUnc
    •   release
      • kbdAnsi.execTélécharger ce fichier [Réservé aux membres club]22 528 octets
    • kbdAnsi.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier691 octets
    • kbdAnsi.ncbTélécharger ce fichier [Réservé aux membres club]27 648 octets
    • kbdAnsi.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier903 octets
    • kbdAnsi.suoTélécharger ce fichier [Réservé aux membres club]9 216 octets
    • kbdAnsi.vcprojTélécharger ce fichier [Réservé aux membres club]3 741 octets

Télécharger le zip


 Historique

26 octobre 2005 16:37:05 :
Site
06 avril 2006 22:02:47 :
Commentaire.

 Sources du même auteur

Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64)
Source avec Zip Source avec une capture FIND TEXT (WIN64)
Source avec Zip DELETE DIRECTORY (WIN64)
Source avec Zip ENUM DIRECTORY (WIN64)
Source avec Zip TEMPLATES C/C++ POUR VS 2010

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

QWERTY - AZERTY AVEC SDL, UNE ALTERNATIVE par Scheb
Source avec Zip Source avec une capture MOUSECONTROL par NeoUmbrella
Source avec Zip BEEPER, UTILISER UN HOOK CLAVIER INTÉGRÉ À L'EXÉCUTABLE ET G... par ndubien
Source avec Zip DÉTOURNER LA FRAPPE CLAVIER par racpp
Source avec Zip SIMULATION DU CLAVIER/SOURIS par Steph115

Commentaires et avis

Commentaire de MuPuF le 14/10/2005 23:24:31

bonjour brunews, j'ai une question :

A quoi servent __stdcall, __fastcall et l'autre dont je me souviens plus le nom, je me doute que c'est une facon d'appeller la fonction (lors de la tranformation en asm) mais je suis pas sur ...

Commentaire de BruNews le 14/10/2005 23:32:21 administrateur CS

cdecl : params sur stack, appelant dépile, c'est pas le  rapide mais ça permet les fonctions avec nbr de params indéfinis (sprintf par exemple).
stdcal : params sur stack, fonction dépile.
fastcall : les 2 premiers params par registre (ECX puis EDX), le reste sur stack, fonction dépile. C'est 'normalement' le plus rapide mais il convient d'étudier chaque cas.

Commentaire de MuPuF le 14/10/2005 23:56:14

faut que je me mette a l'asm lol, heuresement que j'ai 1 minimum de notion sinon ça aurait été du chinois, merci encore !
Tans que j'y suis, je préviens que je travaille a une nouvelle version de filesender qui approche de sa maturitée finale (je l'adore ce petit), je rappelle le lien http://www.cppfrance.com/code.aspx?ID=33958.

Encore merci brunews ...

Commentaire de poppyto le 15/10/2005 09:32:13 administrateur CS

Pas mal :). A noter qu'on peut se servir de la structure MOUSEINPUT pour déplacer/cliquer la souris. Pour information, La différence entre keybd_event/mouse_event et SendInput est que SendIpnut accepte une liste de structure. Du coup on peut écrire tout une séquence (pour une démo?) et n'effectuer qu'un appel de fonction.

Commentaire de BruNews le 15/10/2005 09:42:57 administrateur CS

Je n'ai pas fait en 1 seul appel ici cause qu'on ne connait pas ce qui arrive en param, il aurait fallu faire 2 routines au cas où la longueur aurait été trop importante et aurait empêché l'alloc mémoire du tableau de INPUT.
De toute manière c'était vraiment parce qu'on voit souvent cette question sinon l'envoi de touches clavier sur un system multitache est vraiment à bannir.

Commentaire de victorcoasne le 15/10/2005 10:05:29

BruNew revient avec la sa nouvelle source toujours plus API !

Commentaire de poppyto le 15/10/2005 18:28:40 administrateur CS

>l'envoi de touches clavier sur un system multitache est vraiment
>à bannir.

Sauf peut-être pour un virus qui a de l'humour :-D

Commentaire de NoRabbit le 16/10/2005 23:30:21

sinon, comment faire pour simuler une touche enfoncée pendant x secondes ?

Commentaire de poppyto le 16/10/2005 23:34:16 administrateur CS

un bon vieux do/whlie pardi :D

void EnfoncerTouche(int Secondes,int touche)
{

DWORD Time1 = GetTickCount();

do
{
   SendInput...
}
while(GetTickCount()-Time1 < Secondes*1000)

}

Commentaire de BruNews le 16/10/2005 23:41:43 administrateur CS

simuler pendant x secondes ???
Faudrait tout de même pas délirer, tu comptes ligoter l'utilisateur pendant ce temps ???

Commentaire de NoRabbit le 17/10/2005 15:13:09

non, justement en évitant la boucle...
Il n'y a pas de fonction qui permet de simuler une touche enfoncée et une autre qui simulerait la touche lorsqu'elle est relevée ?
J'imagine qu'il s'agit juste de changer l'état d'une touche du clavier quelque part...

Commentaire de BruNews le 17/10/2005 15:16:08 administrateur CS

Regarde dans la boucle du code, il y a bien les 2 états, appuyé et relaché.

Commentaire de NoRabbit le 17/10/2005 16:49:40

ha oui sorry

Commentaire de Oeil_de_taupe le 27/10/2005 21:43:14

A noter que keybd_event a été remplcé par SendInput. Mais dans quel cas nous avons besoin de cette fonction? Ce ne serait pas un peu du bricolage? (je veux dire par là qu'il y a d'autre solutions qui me paraissent plus intéréssantes)

Commentaire de BruNews le 27/10/2005 22:36:24 administrateur CS

Je l'ai déjà écrit plus haut:
"De toute manière c'était vraiment parce qu'on voit souvent cette question sinon l'envoi de touches clavier sur un system multitache est vraiment à bannir."

Commentaire de piranhaworld le 02/11/2005 22:38:56

je suis encore un newbi en C++, mais à la compil (sous VCPP) il me sort "'INPUT' : undeclared identifier" du coup s'enchaine une 20aine d'erreur..

je suis bien parti du .cpp du zip.. (quand même)

merci

Commentaire de poppyto le 02/11/2005 22:41:42 administrateur CS

à insérer en début de source :
#include <windows.h>

Eventuellement télécharger le dernier SDK si rien n'y peut.

Commentaire de BruNews le 02/11/2005 22:44:56 administrateur CS

essaie
#define _WIN32_WINNT 0x0500
AVANT
#include <windows.h>

Commentaire de brownfire le 02/12/2005 18:21:32

a moi pour simuler les touches du clavier j'utilise
keybd_event (VK_NOMDELATOUCHE,0,0,0);

Commentaire de shadowshine le 03/12/2005 04:34:40

chui un newbie com on les aime pas, mais je fais comment sachant que windows.h n'existe pas sous visual C++ 2005 ? :/

Commentaire de shadowshine le 03/12/2005 05:04:06

ok pardon, jai installé le SDK, du coup j'include le windows.h, mais à la compile il me dit toujours que la fonction SendInput n'existe pas.. help :(

Commentaire de shadowshine le 03/12/2005 05:10:42

la fonction keybd_event() existe par contre, mais j'obtiens ces erreurs :

error LNK2001: unresolved external symbol "extern "C" int __stdcall GetKeyboardState(unsigned char *)" (?GetKeyboardState@@$$J14YGHPAE@Z)

error LNK2001: unresolved external symbol "extern "C" void __stdcall keybd_event(unsigned char,unsigned char,unsigned long,unsigned long)" (?keybd_event@@$$J216YGXEEKK@Z)

Commentaire de BruNews le 03/12/2005 09:41:37 administrateur CS

Toujours mettre dans cet ordre:
#define _WIN32_WINNT 0x0501
#define _WIN32_IE 0x0501
#include <windows.h>

Commentaire de brownfire le 03/12/2005 15:10:28

a ok moi je programme sous dev-c++ c surement pour ca ! et tkt moi oci chui un news

 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 Win32 simulation de touche du clavier [ par zibo3 ] Bonjour, j'ai un petit souci, j'aimerai pouvoir simuler l'appuie sur la touche TAB mais avec la touche SHIFT appuyé.Je sais que je dois envoyé un évén gestion clavier sous mfc [ par dambeaufort ] bonjour a tous, j'ai regarder les messages deja preent dans le forum mais je n'arrive pas a efectuer la chose suivante:J'aimerais sous une application les touche F..du clavier [ par Battousai ] salut,je suis entrain d'ecrir un programme en c en mode dos (que j'éspere poster sur ce site), et j'aimerait y ajouter l'utilisation des toucher F1,F2 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 gestion du clavier [ par Myts ] SalutJe programme sous TC++ (turbo c++) sous dos.Et j'ai un probleme concernant la gestion du clavier.Mon jeux, prochainement sur ce site, doit effect clavier : La touche Windows et la touche alt [ par bily ] Vegeta :-)Salut,je voudrais savoir comment a l'aide d'un boutton bloquer et debloquer la touche wndows en esperant que son raccourci "ctrl+echap" soie IMPORTANT CLAVIER WINDOWS BLOQUER [ par bily ] Vegeta :-)Salut,je voudrais savoir comment a l'aide d'un boutton bloquer et debloquer la touche wndows en esperant que son raccourci "ctrl+echap" soie Simuler l'appui de la touche F11 pour le plein écran sous Internet Explorer en Java [ par astrolynx ] Meilleurs voeux à tous, et à ceux que vous aimez ou appréciez...Question :Je souhaite afficher mon site en plein écran dès la connexion.Je connais la 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


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 : 1,108 sec (3)

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