Simuler Ctrl+c depuis Python vers le clavier .
papanou1965
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
papanou1965 Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
papanou1965 Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
Bonjour, Voilà le soucis à six sous.
J'arrive sans problème à détecter une frappe de Ctrl+c au clavier dans Python.
Mais je n'arrive pas à faire le contraire .
C'est à dire de remplacer l'utilisateur par Python et de lui faire faire un Ctrl+c.
Cela fait 3 jours que j'arpente le net et je ne m'en sort pas .
Si vous aviez une petite indication pour m'aider ce serais sympa.
J'arrive sans problème à détecter une frappe de Ctrl+c au clavier dans Python.
Mais je n'arrive pas à faire le contraire .
C'est à dire de remplacer l'utilisateur par Python et de lui faire faire un Ctrl+c.
Cela fait 3 jours que j'arpente le net et je ne m'en sort pas .
Si vous aviez une petite indication pour m'aider ce serais sympa.
4 réponses
-
Il faut envoyer un signal, il existe un module en python qui se nomme justement signal et je pense que celui qui t'intéresse est SIGINT
-
Merci je vais chercher de se côté là .
-
tu peut apparemment le faire avec ctypes:
import ctypes import time SendInput = ctypes.windll.user32.SendInput # C struct redefinitions PUL = ctypes.POINTER(ctypes.c_ulong) class KeyBdInput(ctypes.Structure): _fields_ = [("wVk", ctypes.c_ushort), ("wScan", ctypes.c_ushort), ("dwFlags", ctypes.c_ulong), ("time", ctypes.c_ulong), ("dwExtraInfo", PUL)] class HardwareInput(ctypes.Structure): _fields_ = [("uMsg", ctypes.c_ulong), ("wParamL", ctypes.c_short), ("wParamH", ctypes.c_ushort)] class MouseInput(ctypes.Structure): _fields_ = [("dx", ctypes.c_long), ("dy", ctypes.c_long), ("mouseData", ctypes.c_ulong), ("dwFlags", ctypes.c_ulong), ("time",ctypes.c_ulong), ("dwExtraInfo", PUL)] class Input_I(ctypes.Union): _fields_ = [("ki", KeyBdInput), ("mi", MouseInput), ("hi", HardwareInput)] class Input(ctypes.Structure): _fields_ = [("type", ctypes.c_ulong), ("ii", Input_I)] # Actuals Functions def PressKey(hexKeyCode): extra = ctypes.c_ulong(0) ii_ = Input_I() ii_.ki = KeyBdInput( hexKeyCode, 0x48, 0, 0, ctypes.pointer(extra) ) x = Input( ctypes.c_ulong(1), ii_ ) SendInput(1, ctypes.pointer(x), ctypes.sizeof(x)) def ReleaseKey(hexKeyCode): extra = ctypes.c_ulong(0) ii_ = Input_I() ii_.ki = KeyBdInput( hexKeyCode, 0x48, 0x0002, 0, ctypes.pointer(extra) ) x = Input( ctypes.c_ulong(1), ii_ ) SendInput(1, ctypes.pointer(x), ctypes.sizeof(x)) def run(): PressKey(0x11) #Ctrl PressKey(0x43) #C ReleaseKey(0x43) #~C ReleaseKey(0x11) #~Ctrl if __name__ =="__main__": run()
https://stackoverflow.com/questions/13564851/how-to-generate-keyboard-events-in-python
Google it :p
-
Merci à vous deux .
Voilà ce qui se passe dans les deux cas.
Ctrl+c ferme la console.
Et ce n'est pas ce que j'attendais , même si python fait ce qu'il doit faire .
Je voulais faire un simple copier dans le presse papier d'une zone sélectionnée.
Et aller lire le contenu pour l'utiliser dans une variable.
Le script de Suguel fonctionne bien , j'espère que tu n'a pas coder tout sa.
Moi j'ai trouvé ceci qui fait exactement pareil
import os import signal os.kill(signal.CTRL_C_EVENT, 1) r=input('je devrais passer ici! et attendre.')
Le soucis c'est qu'il n'y passera jamais .
Merci pour votre aide et désolé de vous avoir fait chercher avec moi pour des prunes.
Bonne journée @ tous.