Què és el clic automàtic?
El clic automàtic és un programa on s'escriu algun script de codi i, en funció del codi, si algun usuari defineix que es prem una tecla, es farà clic amb el ratolí automàticament. A Python, podem fer un projecte de clic automàtic mitjançant un mòdul pynput que es pot instal·lar mitjançant l'ordre pip.
Podem dividir el codi de clic automàtic en els passos següents:
1. Importació dels mòduls necessaris
Importarem el mòdul de temps i fil, i importarem el mòdul Button, Controller del submòdul del ratolí de pynput. De la mateixa manera, importarem els mòduls Listener i Keycode des del submòdul de teclat de pynput.
Exemple:
import time import threading from pynput.mouse import Button, Controller from pynput.keyboard import Listener, KeyCode
2. Inicialització de les variables
En aquest apartat, inicialitzarem quatre variables molt útils per a l'execució del programa.
Exemple:
buttonDirection= Button.right delayTime= 0.001 startStopButton = KeyCode(char='s') terminateButton= KeyCode(char='x')
3. Creació de la classe
En aquesta secció, crearem la classe que amplia la classe de fil per comprovar si el clic del ratolí s'ha executat o no.
inserir al teclat
Exemple:
class ClickTheMouse(threading.Thread): def __init__(self, delayTime, buttonDirection): super(ClickTheMouse, self).__init__() self.delayTime = delayTime self.buttonDirection = buttonDirection self.running = False self.program_running = True
4. En aquesta secció, definirem alguns mètodes per controlar els clics del ratolí mitjançant fils externament.
Exemple:
def startMouseClick(self): self.running = True def stopMouseClick(self): self.running = False def exitScript(self): self.stopMouseClick() self.program_running = False
5. En aquesta secció, hem definit el mètode que executarà el codi complet mitjançant dos bucles imbricats. Aquests bucles s'acabaran quan les variables s'estableixin com a fals. En cas contrari, continuaran amb el programa.
Exemple:
def run(self): while self.program_running: while self.running: mouse.click(self.buttonDirection) time.sleep(self.delayTime) time.sleep(0.1)
6. En aquesta secció, crearem el fil per fer clic amb el ratolí i després començarem el fil.
Exemple:
mouse = Controller() clickThread = ClickTheMouse(delayTime, buttonDirection) clickThread.start()
7. És l'última secció on definim la funció de clic del teclat. Si es prem alguna tecla, passa com a argument en aquesta funció i es verifica amb diferents casos.
Si és la tecla startStop, el programa s'iniciarà o s'aturarà. Si és la clau de finalització, el programa s'acabarà.
Exemple:
def on_press(key): if key == startStopButton: if clickThread.running: clickThread.stopMouseclick() else: clickThread.startMouseclick() elif key == terminateButton: clickThread.exitScript() listener.stop() with Listener(on_press=on_press) as listener: listener.join()
Exemple complet:
import time import threading from pynput.mouse import Button, Controller from pynput.keyboard import Listener, KeyCode delayTime = 0.001 buttonDirection = Button.right startStopButton = KeyCode(char='s') terminateButton = KeyCode(char='x') class ClickTheMouse(threading.Thread): def __init__(self, delayTime, buttonDirection): super(ClickTheMouse, self).__init__() self.delayTime = delayTime self.buttonDirection = buttonDirection self.running = False self.program_running = True def startMouseclick(self): self.running = True def stopMouseClick(self): self.running = False def exitScript(self): self.stopMouseClick() self.program_running = False def run(self): while self.program_running: while self.running: mouse.click(self.buttonDirection) time.sleep(self.delayTime) time.sleep(0.1) mouse = Controller() clickThread = ClickTheMouse(delayTime, buttonDirection) clickThread.start() def on_press(key): if key == startStopButton: if clickThread.running: clickThread.stopMouseClick() else: clickThread.startMouseclick() elif key == terminateButton: clickThread.exitScript() listener.stop() with Listener(on_press=on_press) as listener: listener.join()
Explicació:
Al codi anterior, hem inicialitzat les tecles d'inici i aturada com a 's' i la tecla de finalització com a 'x'. Quan executem l'script Python i si introduïm 's', automàticament, sempre que movem el ratolí per la pantalla, es farà clic amb el botó dret amb un retard de 0,001 segons o un mil·lisegon.
Podem canviar la funcionalitat del clic del ratolí a la secció 2, on podem utilitzar l'atribut Button.left o Button.center per canviar la direcció del clic del ratolí.
Si volem veure el clic del ratolí fàcilment, podem canviar el delayTime a més alt per veure el clic real. En aquest codi, quan no movem el cursor del ratolí a la pantalla, no farà clic. Només funcionarà quan movem el cursor a la pantalla.