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 :

Simuler l'écriture au clavier


Sujet :

C

  1. #1
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut Simuler l'écriture au clavier
    Bonjour tout le monde,
    Je voudrais faire un programme qui puisse écrire au clavier.
    Par exemple, supposons qu'un programme CLI attend une entrer clavier.
    Je veux que mon programme puisse remplir cette rentrer clavier comme si c'était quelqu'un qui le faisait?
    Alors là deux problématique, la première c'est qu'il faut que le programme sache dans quelle fenêtre il va écrire(imaginer si j'ai plusieurs console qui attendent une entrée clavier), et là je croit qu'il faudra faire dans le non portable(je suis sous XP).
    Deuxième problématique, le problème en lui même, simuler la saisie clavier.
    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    C'est la fonction keybd_event (simule un événement clavier) que tu cherches ou quelque chose de bien plus compliqué ?

  3. #3
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Peut être, mais quand on écrit au clavier, on écrit dans une fenêtre. Comment sélectionner la fenêtre voulue?

  4. #4
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    En faisant quelque recherche sur internet, j'ai trouver que pour écrire dans une fenêtre, la fenêtre doit posséder le Focus. Alors comment donner le Focus à une application externe au mien?

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    keybd_event simule un événement clavier c'est tout. Si tu veux cibler une fenêtre particulière, la meilleur façon de faire c'est de lui envoyer un message WM_KEYDOWN, etc. Voir SendMessage().

  6. #6
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Merci Melem pour tes explications. En cherchant sur internet SendMessage(), je tombe sur ce cours ici même sur developpez.
    Le cours explique l'utilisation de PostMessage(). Alors voilà ce que j'ai voulu faire : Je veux écrire dans Notepad un texte. Pour cela je cherche sur internet le nom du classe name de Notepad. Je trouve que c'est tout simplement Notepad. C'est effectivement ça, car je peux la sélectionner et la mettre en premier plan en utilisant ce classe name.
    Donc voici le code :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <windows.h>
     int main(int argc, char * argv[])
    {
        HWND hNp = FindWindow("Notepad",NULL);
        SetForegroundWindow(hNp);
        Sleep(100);
        PostMessage(hNp,WM_KEYDOWN ,'M',0);
        PostMessage(hNp,WM_CHAR,'M',0);
        return 0;
    }

    Je veux en faite écrire la lettre M dans notepad. Mais ce code ce compile, mais ne marche pas. Notepad est bien sélectionner, mais rien ne s'affiche dedans...
    Merci de m'aider.

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Le problème, c'est que tu n'écris pas sur le NotePad mais sur son contrôle edit.

    Il faut donc envoyer les messages à son contrôle Edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        HWND hNp = FindWindow("Notepad",NULL);
        HWND hEditNp = FindWindowEx(hNp,NULL,"Edit",NULL);
        PostMessage(hEditNp,WM_CHAR,'M',0);

  8. #8
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Oui ça marche merci beaucoup.
    Maintenant que ça marche je voudrais bien comprendre. Quand on sélectionne une fenêtre, il faut aussi sélectionner le contrôle ou écrire. Très bien. Maintennt deux nouvelles questions :
    • Comment fait-on pour écrire sur le controle qui possède le Focus?
    • Quelles sont les autres contrôles qui existent à part Edit?

    Merci à vous

  9. #9
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par ilys05
    Comment fait-on pour écrire sur le controle qui possède le Focus?
    Tu as déjà toi-même répondu à cette question :
    Citation Envoyé par Melem
    C'est la fonction keybd_event (simule un événement clavier) que tu cherches ou quelque chose de bien plus compliqué ?
    -->
    Citation Envoyé par ilys05
    Peut être, mais quand on écrit au clavier, on écrit dans une fenêtre. Comment sélectionner la fenêtre voulue?
    Citation Envoyé par ilys05
    Quels sont les autres contrôles qui existent à part Edit ?
    http://melem.developpez.com/win32/windowsgui/ ... en supposant que tu saches déjà créer une fenêtre. Sinon, c'est pas avec les contrôles le meilleur moyen de commencer.

  10. #10
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Si seulement tu m'avais donner ce lien dès le début .
    Résolu

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

Discussions similaires

  1. Simuler l'écriture au clavier
    Par Colbix dans le forum Langage
    Réponses: 13
    Dernier message: 10/03/2010, 17h02
  2. Réponses: 2
    Dernier message: 16/01/2009, 00h50
  3. Simuler plusieur touches du clavier en meme temps !
    Par Chyokyka dans le forum Débuter
    Réponses: 3
    Dernier message: 10/04/2008, 17h10
  4. Simuler des actions au clavier
    Par dosbastos dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 03/05/2005, 15h58
  5. [Turbo Pascal] Simulation de touche du clavier
    Par trapiste dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 04/09/2004, 16h35

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