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

Bibliothèques tierces Python Discussion :

Simuler évènements utilisateur (clic souris, entrée clavier)


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 250
    Points : 259
    Points
    259
    Par défaut Simuler évènements utilisateur (clic souris, entrée clavier)
    Bonjour,

    Existe-il en Python3 un module permettant de simuler des évènements provenant d'un utilisateur humain (clic souris, entrée clavier, etc) ?

    Un peu à la manière d'AutoIt avec les MouseClick(x,y), MouseMove(x,y), Send(blabla), WinWaitActive, etc.

    J'ai déjà cherché sur internet mais sans rien trouver. Mais peut être que quelqu'un sait où trouver ça.

    Pour les curieux, dans ma boite, nous avons un générateur automatique de code AutoIt (un recorder évolué). Cet outil contient une classe FactoryCode, et on peut utiliser l'héritage pour écrire dans n'importe quel langage. Pour l'instant, il ne génère que du langage AutoIt. AutoIt est très bien pour sa mission initiale mais reste limité pour aller plus loin. Et mon idée est de générer maintenant du code Python.

    Cordialement

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut

    Si AutoIt le fait, c'est qu'il s'interface avec les API ad hoc de Windows.
    Nombre de ces API sont accessibles en Python via win32*
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import win32api, win32con
    def click(x,y):
        win32api.SetCursorPos((x,y))
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
    click(10,10)
    Après il faut se palucher la doc de l'API et voir les exemples VB.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Bonsoir,
    Pour ce qui est des évènements claviers, tu as la procédure
    win32api.keybd_event
    elle prend en argument 2 paramètres obligatoires.
    Le premier une VirtualKey. l'ensemble des VirtualKey est dans le fichier win32con (VK_RETURN,VK_NUMLOCK,VK_F12,...)
    Le second est un modificateur. également dans win32con (MOD_WIN,MOD_ALT,...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import win32api
     
    def afficher(txt):
        for i in txt:
            key = win32api.VkKeyScan(i)
            win32api.keybd_event(key,0)
     
     
    afficher("Bonjour, tout le monde \nAu revoir les amis!")
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    Je reprends cet ancien sujet.
    Est-il possible sans installer pyHook de récupérer la touche tapée par l'utilisateur (donc un peu l'inverse de ce qui est proposé en deuxième solution).

    J'ai cherché sans succès une doc (en français si possible) sur win32api accessible pour python. Avez-vous un lien à me conseiller?

    Merci
    Gabriel

  5. #5
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    euh... Ouais, reste A savoir à partir d ou vous voulez la récupérer.
    Je pense que cela est possible via tout les gestionnaires d interface graphique ainsi que la console.
    Ne m y connaisant qu en Tkinter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/usr/bin/env python
    try:
        import Tkinter
    except:
        import tkinter as Tkinter
     
    def show(event):
        print "<",event.keysym, ">", "<", event.char, ">"
     
    def main():
        root = Tkinter.Tk()
        root.title("Test de binding")
        root.bind("<KeyPress>", show)
        root.mainloop()
     
    if __name__ == '__main__':
        main()
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Il est aussi possible d'utiliser msvcrt.getch().

    @+
    Merci d'utiliser le forum pour les questions techniques.

Discussions similaires

  1. Récupérer des évenements IO (entrées clavier, clic de souris)
    Par Vinestro dans le forum Bibliothèque standard
    Réponses: 5
    Dernier message: 21/04/2011, 08h59
  2. Réponses: 1
    Dernier message: 20/11/2010, 11h11
  3. Réponses: 2
    Dernier message: 30/06/2010, 15h22
  4. simuler clic souris robot
    Par zarbouine dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2006, 07h49
  5. Emulation de clic souris / touche clavier
    Par Gogoye dans le forum Windows
    Réponses: 3
    Dernier message: 08/09/2005, 14h51

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