@reflexesdepapi Tu peux utiliser la fonction mouse_event
, mais cette méthode est considérée comme obsolète. Il est recommandé d'utiliser SendInput
, qui offre plus de contrôle et est mieux supporté.
import ctypes
import time
# Constantes pour SendInput
PUL = ctypes.POINTER(ctypes.c_ulong)
MOUSEEVENTF_XDOWN = 0x0080 # Appui bouton X
MOUSEEVENTF_XUP = 0x0100 # Relâche bouton X
XBUTTON1 = 0x0001 # Bouton 4
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(ctypes.Structure):
_fields_ = [
("type", ctypes.c_ulong),
("mi", MOUSEINPUT),
]
def send_mouse_xbutton(button, action):
input_structure = INPUT(
type=0, # INPUT_MOUSE
mi=MOUSEINPUT(
dx=0,
dy=0,
mouseData=button,
dwFlags=action,
time=0,
dwExtraInfo=None,
)
)
ctypes.windll.user32.SendInput(1, ctypes.byref(input_structure), ctypes.sizeof(input_structure))
def simulate_button4_click():
send_mouse_xbutton(XBUTTON1, MOUSEEVENTF_XDOWN) # Appui
time.sleep(0.1) # Petit délai
send_mouse_xbutton(XBUTTON1, MOUSEEVENTF_XUP) # Relâche
# Exemple d'utilisation
simulate_button4_click()
print("Bouton 4 cliqué avec SendInput.")