Comment générer des événements de clavier en Python
Pour qu'un système informatique traite les événements de clavier simulés comme de véritables frappes au clavier, vous avez besoin d'une solution qui va au-delà de l'envoi de caractères aux champs de saisie. Une option viable consiste à utiliser la bibliothèque ctypes pour communiquer directement avec le système d'entrée du système d'exploitation.
L'utilisation de ctypes
ctypes fournit un moyen d'interagir avec les bibliothèques compatibles C. et fonctions dans Python. Pour simuler des événements de clavier à l'aide de ctypes, vous pouvez suivre ces étapes :
<code class="python">import ctypes from ctypes import wintypes import time</code>
<code class="python">user32 = ctypes.WinDLL('user32', use_last_error=True)</code>
<code class="python"># Keyboard input structure KEYBDINPUT = ctypes.Structure() KEYBDINPUT._fields_ = (("wVk", wintypes.WORD), ("wScan", wintypes.WORD), ("dwFlags", wintypes.DWORD), ("time", wintypes.DWORD), ("dwExtraInfo", wintypes.ULONG_PTR)) # General input structure INPUT = ctypes.Structure() INPUT._fields_ = (("type", wintypes.DWORD), ("ki", KEYBDINPUT))</code>
<code class="python">def PressKey(hexKeyCode): x = INPUT(type=INPUT_KEYBOARD, ki=KEYBDINPUT(wVk=hexKeyCode)) user32.SendInput(1, ctypes.byref(x), ctypes.sizeof(x)) def ReleaseKey(hexKeyCode): x = INPUT(type=INPUT_KEYBOARD, ki=KEYBDINPUT(wVk=hexKeyCode, dwFlags=KEYEVENTF_KEYUP)) user32.SendInput(1, ctypes.byref(x), ctypes.sizeof(x))</code>
<code class="python">PressKey(VK_MENU) # Alt PressKey(VK_TAB) # Tab ReleaseKey(VK_TAB) # Tab~ time.sleep(2) ReleaseKey(VK_MENU) # Alt~</code>
Supplémentaire Considérations
N'oubliez pas que hexKeyCode fait référence au mappage du clavier virtuel tel que défini par l'API Windows. Une liste de ces codes peut être trouvée dans la documentation MSDN de Microsoft.
Cette approche vous permet de simuler des événements de clavier à un niveau bas, garantissant qu'ils sont traités par le système comme de véritables frappes au clavier.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!