Accueil > Forum > > > > Utilisation de keybd_event
Utilisation de keybd_event
lundi 9 juin 2008 à 08:49:39 |
Utilisation de keybd_event

filoxera
|
Bonjour, J'utilise Visual C++ de Visualstudio 2005 pour envoyer un mot de passe à une application, Lorsque je fait: keybd_event(0x62,0,0,0); //caractere 2 sleep(200); keybd_event(0x60,0,0); // caractere 0 sleep(200); keybd_event(0x50,0,0,0); //caractere p sleep(200); keybd_event(0x46,0,0,0); // caractere f sleep(200); keybd_event(VK_RETURN,0x0d,0,0); tout se passe très bien Je voudrais sans faire keybd_event pour chaque caractere, faire une boucle qui envoi chaque caractere de mon mot de passe("20pf"), genre do while 'fin du mot de passe' keybd_event( code du caractere,0,0,0); loop Merci pour votre aide
|
|
lundi 9 juin 2008 à 10:15:27 |
Re : Utilisation de keybd_event

jfrancois
|
Réponse acceptée !
Bonjour, Quelque chose comme ça : const char* szMotDePasse = "20pf"; for (int i=0 ; szMotDePasse[i] ; ++i) { keybd_event(szMotDePasse[i],0,0,0); Sleep(200); } keybd_event(VK_RETURN,0x0d,0,0);
Jean-François
|
|
lundi 9 juin 2008 à 14:40:39 |
Re : Utilisation de keybd_event

filoxera
|
Merci beaucoup Jean François, cela fonctionne très bien. Mais dans l'application qui recoit le mote de passe, j'ai le message mot de passe invalide? Je me demande si dans keybd_event( szMotDePasse[i],0,00), le szMotDePasse[i] ne devrait pas être transformé en Ox62 pour le '2' Ox60 pour le '0' etc... Comment faire ? Merci si tu as une idée
|
|
lundi 9 juin 2008 à 14:54:26 |
Re : Utilisation de keybd_event
|
lundi 9 juin 2008 à 15:07:19 |
Re : Utilisation de keybd_event

jfrancois
|
Mystère ! la réponse a été vidée ! Les codes ASCII 0x62 et 0x60 ne sont pas ceux de '2' et '0' mais ceux de 'b' et '`' (apostrophe inversée). Essayer avec const char* szMotDePasse = "\x62\x60pf";
ou avec const char* szMotDePasse = "b`pf";
Jean-François
|
|
lundi 9 juin 2008 à 17:15:39 |
Re : Utilisation de keybd_event

filoxera
|
En effet avec "\x62\x60\x50\x46" ça fonctionne, mais pas avec " \x62\60pf" Il faudra donc je transforme mon mot de passe avec un tableau de correspondance genre switch szMotDepasse[i] case 0: szMotDePasse[i]=\x60 case 1: szMotDePae[i]=\x61 case 2: szMotDePasse|i]=\x62 . . Est-ce que je peux garder szMotDepasse[i](qui est un char) ou il faut que j'utilise une autre variable? Merci encore Jean François pour cette aide précieuse
|
|
lundi 9 juin 2008 à 18:22:50 |
Re : Utilisation de keybd_event

jfrancois
|
La fonction keybd_event() n'est pas d'une utilisation aussi simple ! Le premier paramètre de la fonction n'est pas le code ASCII du caractère à simuler mais un code virtuel correspondant. 0x60 et 0x62 sont les codes associés aux constantes VK_NUMPAD0 et VK_NUMPAD2 qui correspondent aux touches 0 et 2 du pavé numérique. Comme les codes 0x30 à 0x39 sont sensés correspondrent aux touches 0 à 9 (codes ASCII = codes virtuels pour ces touches là) je ne comprends pas pourquoi le mot de passe n'est pas compris ! Les lettres ont aussi le même code virtuel que le code ASCII (des lettres majuscules) et la touche NUM LOCK est prise en compte pour générer des minuscules ou des majuscules. Dans \x62\x60\x50\x46, \50\x46 = PF et non pf ! mais comme votre clavier doit être en mode minuscule c'est bien pf qui est généré. Si vous passez le clavier en majuscule, ça n'est plus reconnu ? Jean-François
|
|
lundi 9 juin 2008 à 18:26:16 |
Re : Utilisation de keybd_event

jfrancois
|
CAPS LOCK pour les minuscules/majuscules et non NUM LOCK ! Jean-François
|
|
lundi 9 juin 2008 à 21:12:05 |
Re : Utilisation de keybd_event

jfrancois
|
Réponse acceptée !
Après quelques recherches sur Internet et quelques essais (en simulant l'écriture d'un texte dans une zone de saisie d'un programme windows), voici ce que j'obtiens (qui marche bien avec les chiffres et les lettres quelque soit le mode majuscule/minuscule du clavier, rien avec les autres caractères !) :
#include <windows.h>
void SimulerClavier ( const char* pszChaine // E:chaîne à envoyer ,int iTempo // E:tempo entre les caractères (ms) ) { // --- Lire l'état actuel du clavier MAJ/min BYTE aKeyState[256]; GetKeyboardState((LPBYTE)&aKeyState); bool bMin = ! (bool)(aKeyState[VK_CAPITAL] & 1); // --- Envoyer la chaîne caractère par caractère const char* pc = pszChaine; while (*pc) { if (*pc >= '0' && *pc <= '9') { // --- Chiffre avec simulation de l'appui sur la touche SHIFT // --- (pour passer en mode majuscule pour obtenir les chiffres) if (bMin) keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); keybd_event(*pc,0,0,0); // appui keybd_event(*pc,0,KEYEVENTF_KEYUP,0); // relâche if (bMin) keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0); } else if (*pc >= 'a' && *pc <= 'z') { // --- Lettre minuscule avec simulation de l'appui sur la touche // --- SHIFT (pour repasser en mode minuscule) char cMaj = *pc - 'a' + 'A'; // min --> maj if (! bMin) keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); keybd_event(cMaj,MapVirtualKey(cMaj,0),0,0); // appui keybd_event(cMaj,MapVirtualKey(cMaj,0),KEYEVENTF_KEYUP,0); // relâche if (! bMin) keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0); } else if (*pc >= 'A' && *pc <= 'Z') { // --- Lettre majuscule avec simulation de l'appui sur la touche // --- SHIFT (pour passer en mode majuscule) if (bMin) keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); keybd_event(*pc,MapVirtualKey(*pc,0),0,0); // appui keybd_event(*pc,MapVirtualKey(*pc,0),KEYEVENTF_KEYUP,0); // relâche if (bMin) keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0); } else { // --- Autre caractère keybd_event(*pc,MapVirtualKey(*pc,0),0,0); // appui keybd_event(*pc,MapVirtualKey(*pc,0),KEYEVENTF_KEYUP,0); // relâche } ++pc; // caractère suivant // --- Tempo entre chaque caractère Sleep(iTempo); } // --- Envoyer le retour chariot final keybd_event(VK_RETURN,0x0D,0,0); } int main(void) { SimulerClavier("20pf",200); system("pause"); return 0; } Jean-François
|
|
vendredi 13 juin 2008 à 15:37:01 |
Re : Utilisation de keybd_event

filoxera
|
Merci beaucoup Jean François pour cette recherche. Je vais essayer d'intégrer cela dans mon code.
|
|
Cette discussion est classée dans : mot, caractere, passe, event, keybd
Répondre à ce message
Sujets en rapport avec ce message
vérification du mot de passe [ par biscot19 ]
Bonjour,Je cherche comment vérifier un mot de passe NT en C++.J'ai vu que la fonction NetUserChangePassword permettait de le faire mais comme son nom
acces base de donnée DAO protégée par mot de passe [ par Frederyck ]
Bonjour,Alors je voudrais savoir comment faire pour acceder à une base de donnée Access 97 via DAO quand celle ci est protégée par mot de passe.J'aime
comment protéger l'ouverture d'un fichier ? [ par f1cobra ]
Bonjour, je voudrais protéger l'ouverture d'un fichier excell par un mot de passe, de manière a ce que seules les personnes ayant le mot de passe puis
Mot de passe à l'ouverture d'une BDD [ par lyricman ]
Bonjourje fais un programme en C++ (Borland C++ Builder 6) avec une base de données.le pb est que chaque fois que j'exécute mon programme, il me deman
Controler impression [ par none77 ]
Bonjour,j'aimerais controler les impressions a l'aide de mot de passe.En fait dès ke lon veut imprimer(sous Word par exemple), on demande un mot de p
keybd_event et sleep [ par Xentor609 ]
salut,J'utilise keybd_event pour simuler des touches du clavier.Juste qu'ici, j'ai aucun problème.Mais imaginons que j'utilise un sleep juste après, l
détecter un mot de passe [ par Vortex99011 ]
Bonjour,j'ai créé un programme " hook " qui récupère les données tapées au clavier. Le seul problème, c'est que ca récupère également les mot de passe
creer un mot de passe (web) [ par Raphael2 ]
bonjour,j'essai de creer un site où il faut que le visiteur entre un mot de passe pour accéder à une autre page.Mon probleme est de creer et de faire
* Mot de passe [ par shenron ]
Slt,vs savez comment on fait pour lorsqu'un user saisit une chaine de caractère, ce k'il tape se met en * comme si c t un mot de passe?
mot de passe [ par scully2501 ]
bonjourj'ai créér un site en php mais j'aimerai protéger ma page administration ("adm.php")avec un mot de passe hautement sécurisé pour que personne d
Livres en rapport
|
Derniers Blogs
[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE par tja
C'est le dernier principe des principes du Design Orienté Objet (The Principles of Object Oriented Design) fondés par Robert C. Martin plus connu sous le pseudonyme d'Uncle Bob.
l'image empruntée de LosTechies.
Je ne traite pas les principes dans...
Cliquez pour lire la suite de l'article par tja TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|