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.
    David.

  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.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu devrais pouvoir convertir avec VkKeyScan(),OemKeyScan() ou MapVirtualKey()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  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 ?)
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

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

  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


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  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.
    David.

  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.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  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 !
    David.

+ 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