Simuler Ctrl+c depuis Python vers le clavier .

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.

4 réponses

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