IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Dev C] Envoyer un caractère ASCII sur la sortie clavier


Sujet :

C

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut [Dev C] Envoyer un caractère ASCII sur la sortie clavier
    Bonjour à tous,

    Je fais un prog qui récupère des données sur le port rs232 et qui les envoie sur la sortie clavier.
    Il les récupère sous forme de chaines: "ARdeT654Drt".

    J'arrive à envoyer des caractères sur la sortie clavier avec: keybd_event(touche,0,0,0);
    Mais seulement "touche" fait partie d'une palette de variables déja définie comme "Virtual-Key Codes" qui n'ont rien à voir avec les codes ascii.

    En gros, j'aimerais faire un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0;i<strlen(buffer);i++) {
                    keybd_event(buffer[i],0,0,0);
                    keybd_event(buffer[i],0,KEYEVENTF_KEYUP,0);
                }
    Mais comme la palette de: "Virtual-Key Codes" s'arrete à 125 et que les codes ne correspondent pas, la chaine envoyée à la sortie clavier ne corresond pas du tout.

    Y a t-il un moyen pour détourner ce pb ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu veux dire envoyer ce caractère pour simuler une touche clavier je suppose (la sortie clavier est difficile à imaginer, une décharge électrique ?)
    D'autre part, c'est une question pour le forum Windows. mais tu peux peut-être chercher vers SendInput qui remplace keybd_event.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Tu devrais pouvoir convertir avec VkKeyScan(),OemKeyScan() ou MapVirtualKey()...

  4. #4
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par Trap D
    (la sortie clavier est difficile à imaginer, une décharge électrique ?)

  5. #5
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Soit ça ne fonctionne pas, soit je ne m'y prends pas comme il faut:

    keybd_event(VkKeyScan(buffer[i]),0,0,0);
    keybd_event(buffer[i],MapVirtualKey(buffer[i],0),0,0);
    keybd_event(OemKeyScan((WORD)buffer[i]),0,0,0);

  6. #6
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    (la sortie clavier est difficile à imaginer, une décharge électrique ?)
    mdr

  7. #7
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Excellent, ça marche !
    Voici le code pour ceux que ça interesse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                for (i=0;i<strlen(buffer)-1;i++) {
                    sCar = VkKeyScan((TCHAR)(buffer[i]));
                    if ((sCar & 0x0100)) keybd_event(VK_SHIFT,0,0,0); // Shift
                    if ((sCar & 0x0200)) keybd_event(VK_CONTROL,0,0,0); // Ctrl
                    if ((sCar & 0x0400)) keybd_event(VK_MENU,0,0,0); // Alt
                    keybd_event(sCar,0,0,0); // Virtual-Key Codes (unsigned char)
                    keybd_event(sCar,0,KEYEVENTF_KEYUP,0);
                    if ((sCar & 0x0400)) keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0); // Alt
                    if ((sCar & 0x0200)) keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0); // Ctrl
                    if ((sCar & 0x0100)) keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); // Shift
                 }
    Merci Médinoc.

    Trap D: Dev ne connait pas SendInput(); il veut la lib: User32 et je ne sait pas comment l'appeler.

    afrikha et Pouic: Je n'ai pas trop saisi votre remarque.
    Je ne me suis pas trompé en disant: "La sortie clavier", j'aurais peut-être du dire le tampon clavier mais je craignait d'être mal comprit.

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    La sortie clavier n'existe pas, c'est l'entrée clavier qui existe.

  9. #9
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    ok,

    Bon, vous m'avez, malgré tout, comprit

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. caractère ascii de TM
    Par barthelv dans le forum MFC
    Réponses: 9
    Dernier message: 28/01/2011, 09h35
  2. Fonction sur chaine de caractère (ASCII)
    Par Medmidou dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/05/2007, 01h40
  3. Envoyer un fichier texte sur un port IP ?
    Par jnc dans le forum Web & réseau
    Réponses: 4
    Dernier message: 19/07/2005, 11h01
  4. [CR] envoyer un caractère non imprimable
    Par nnj dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/07/2004, 08h56
  5. Fontes caractères ASCII, c'est où ?
    Par jojo's dans le forum Assembleur
    Réponses: 11
    Dernier message: 02/06/2004, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo