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

Python Discussion :

Communiquer avec python sans le focus


Sujet :

Python

  1. #1
    Membre averti Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Par défaut Communiquer avec python sans le focus
    Bonmatin Bonjour Bonsoir,

    je suis en train de créer des macros (Une macro est un terme générique pour désigner un moyen de mémoriser un enchaînement de tâches au sein d’un logiciel).
    Après avoir choisi mon macro, celui-ci tournera en boucle pendant une durée donné. Le macro tourne avec la fenêtre qu'il traite en avant, celle-ci a donc le focus.

    Si je reviens a mon ordinateur et veux stopper mon programme, il me faudrait appuyer sur le touche "s" par exemple pour dire "stop".

    Le seul moyen que je connaisse pour que python détecte un événement clavier est avec une fenêtre Tkinter et le fameux "bind". Ça tombe bien, mon programme utilise justement une fenêtre tkinter. Or cette technique ne marche uniquement que si la fenêtre tkinter a le focus.

    Mais le problème, c'est que puisque ce programme lance un macro qui clic sur d'autres pages mises en plein écran devant la fenêtre tkinter, ce dernier n'a plus le focus et ne détecte pas mon appuie sur le"s" pour s’arrêter.
    Existe-t-il une alternative ?

    merci d'avance à vos idées / réponses, je débute

  2. #2
    Membre averti Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Par défaut
    Je suis aller voir du coté de pygame mais je n'arrive même pas à utiliser les fonctions comme il se doit :

    pygame.key.get_pressed() --> me retourne toujours une liste de 0
    pygame.key.get_focused() --> me retourne toujours un 1
    pygame.event.get() --> me retourne toujours un liste vide

    et ce, que j'appui ou non sur une touche...

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Citation Envoyé par luclucdu38 Voir le message
    Après avoir choisi mon macro, celui-ci tournera en boucle pendant une durée donné. Le macro tourne avec la fenêtre qu'il traite en avant, celle-ci a donc le focus.

    C'est dans cette fenêtre que tu dois mettre un bouton Stop, comme tu peux le voir dans toutes autres applications lors de tâches longues.

  4. #4
    Membre averti Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Par défaut
    C'est a dire, mettre sur stop cette fenetre ?
    Je dois fermer cette fenetre de jeu pour redonner a ma fenetre tkinter le focus comme ça je peux stoper le macro !?

    N'existe-t-il pas une autre alternative ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Ce n'est pas ce que j'ai dit.

    Sur ta fenêtre de dialogue dans laquelle la macro s'exécute tu dois placer un bouton "Stop".

    Lorsque tu transfères un paquet de fichiers de ta clé USB ou que tu graves un disque ou que ... etc, tu as bien une possibilité d'interrompre l'opération, non ? C'est de cela que je parle.


    Pour info, si ta macro utilise un process non Python, avec subprocess par exemple, il faudra relever l'ID du process et faire un kill dessus.

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    pour le dire simplement, imaginons qu'en appuyant sur la touche 's' tu stoppes ton programme python qui n'a pas le focus
    oui sauf que le focus, c'est une autre fenêtre qui l'a, dans cette fenêtre un programme tourne et quand on appuie sur 's' ça sauvegarde le document, ou bien ça quitte l'application, ou encore ça lance Tux Racer, quelle action doit-on prendre ? donner la priorité à ton programme qui n'a pas le focus ou à la fenêtre qui a le focus quand on appuie sur la touche ?

    en admettant que ce que tu veux faire soit techniquement faisable (mais j'ai quand même un gros doute) c'est une mauvaise idée de le faire.

  7. #7
    Membre averti Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Par défaut
    Justement, c'est ça le problème :
    La fenetre tkinter dans laquelle s'execute le macro et justement en arriere plan, la fenetre qui a le focus est une fenetre de jeu windows qui n'a rien a voir avec python ou tkinter.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Le gestionnaire d'écran expédie caractères et clicks de souris à l'application "active": celle qui a le focus.
    Si vous voulez attrapez ce qu'il se passe et réagir à une clé genre F8 ou autre, vous pouvez toujours "intercaler" du code entre clavier/souris et le gestionnaire d'écran qui pourra regarder ce qui passe et réagir le cas échéant. C'est une technique qu'on utilise pour réaliser des "keylogger". La réalisation dépend de l'environnement système et si vous voulez des détails, taper "python keylogger" dans votre moteur de recherche favori devrait vous retourner des résultats intéressants.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre averti Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Par défaut
    merci je vais voir tout ça !

  10. #10
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par luclucdu38 Voir le message
    merci je vais voir tout ça !
    et bonne chance !

    Citation Envoyé par wiztricks Voir le message
    C'est une technique qu'on utilise pour réaliser des "keylogger". La réalisation dépend de l'environnement système
    sachant que sous linux ça revient à aller jouer de l'API Xlib, hooker au niveau de /dev/input ou similaire et ça reste relativement aisé, mais de ce que je comprends il est sous windows, ça ne vas pas être la même affaire surtout depuis python et sans connaissance à priori de l'API Win32 (sans parler du fait qu'il ne semble pas lire l'intégralité des réponses ou tenir compte du fait que c'est une mauvaise idée, d'ailleurs des programmes sous windows comme autohotkey ou autoit ne le font pas non plus)

  11. #11
    Membre averti Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Par défaut
    Après avoir chercher sur internet, j'ai du mal a comprendre comment marche un keylogger.
    Apparemment cela nécessite un fichier 'log.txt' mais dans lequel il se passe quoi ?
    Il est utilisé par python ou par l'ordi ?

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par luclucdu38 Voir le message
    Après avoir chercher sur internet, j'ai du mal a comprendre comment marche un keylogger.
    Apparemment cela nécessite un fichier 'log.txt' mais dans lequel il se passe quoi ?
    Il est utilisé par python ou par l'ordi ?
    Un key logger, comme son nom l'indique se contente d'attraper les caractères tapés par l'utilisateur. Les stocker dans un fichier n'est qu'un exemple de ce qu'on peut en faire. A vous de voir si cela permet de répondre à votre question.
    note: Côté programmation tkinter ou Python, il n'y a pas de solution. A vous d'explorer les interfaces "systèmes" qui pourraient aider et demander de l'aide dans les forums associés

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre averti Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Par défaut
    Mais justement, il fait comment le keylogger pour "recuperer" les touches de claviers ? :

    Y a t il une commande speciale a faire sur python ?
    Ou :
    Est ce que c'est quelque chose qui est realisé appart de python et python se contente de recuperer le contenu du fichier ?

  14. #14
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par luclucdu38 Voir le message
    Mais justement, il fait comment le keylogger pour "recuperer" les touches de claviers ? :

    Y a t il une commande speciale a faire sur python ?
    Ou :
    Est ce que c'est quelque chose qui est realisé appart de python et python se contente de recuperer le contenu du fichier ?
    Cela est à demander dans le forum système ad hoc ou a rechercher dans le MSDN Microsoft, non?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Par défaut
    Regarde peut-être du coté de l'utilitaire AutoHotKey sous windows: http://www.autohotkey.com/

    Ce n'est pas du python, mais le scripting est assez simple à comprendre
    Et justement, c'est un outil plutôt spécialisé sur du keylogger ou de la manipulation d'interface d'autres applications.
    C'est assez puissant, je l'avais utilisé pour réaliser des tests d'interfaces graphiques.

Discussions similaires

  1. python communique avec eclipse
    Par jrad31 dans le forum Général Python
    Réponses: 2
    Dernier message: 24/02/2014, 13h42
  2. Communiquer avec la BDD sans liaison
    Par Sergeras dans le forum HyperFileSQL
    Réponses: 13
    Dernier message: 22/07/2011, 12h23
  3. Traitement d'image avec Python sans modules
    Par kevgen dans le forum Général Python
    Réponses: 4
    Dernier message: 23/11/2010, 00h02
  4. Courbe avec python sans pylab
    Par anthonystaltaro dans le forum Général Python
    Réponses: 4
    Dernier message: 06/05/2009, 13h00
  5. Réponses: 2
    Dernier message: 30/06/2006, 14h20

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