Mi az az Auto Clicker?
Az Auto Clicker egy olyan program, ahol valamilyen kódszkriptet írnak, és a kód alapján, ha valamelyik felhasználó úgy definiálja, hogy lenyomnak egy billentyűt, akkor az egér automatikusan kattintásra kerül. A Pythonban egy pip paranccsal telepíthető pynput modul segítségével auto Clicker projektet készíthetünk.
Az automatikus kattintó kódot a következő lépésekre oszthatjuk fel:
1. A szükséges modulok importálása
A pynput egér almoduljából importáljuk az idő és szál modult, a Button, Controller modult pedig importáljuk. Ugyanígy importáljuk a Listener és Keycode modulokat a pynput billentyűzet almoduljából.
Példa:
import time import threading from pynput.mouse import Button, Controller from pynput.keyboard import Listener, KeyCode
2. A változók inicializálása
Ebben a részben négy olyan változót fogunk inicializálni, amelyek nagyon hasznosak a program végrehajtásához.
Példa:
buttonDirection= Button.right delayTime= 0.001 startStopButton = KeyCode(char='s') terminateButton= KeyCode(char='x')
3. Az osztály létrehozása
Ebben a részben létrehozzuk azt az osztályt, amely kiterjeszti a szál osztályát, hogy ellenőrizze, hogy az egérkattintás végrehajtódott-e vagy sem.
Példa:
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. Ebben a részben meghatározunk néhány módszert az egérkattintások külső szálak segítségével történő szabályozására.
Példa:
def startMouseClick(self): self.running = True def stopMouseClick(self): self.running = False def exitScript(self): self.stopMouseClick() self.program_running = False
5. Ebben a részben meghatároztuk azt a metódust, amely a teljes kódot két egymásba ágyazott hurok használatával hajtja végre. Ezek a hurkok megszakadnak, ha a változók értéke false. Ellenkező esetben folytatják a programot.
Példa:
def run(self): while self.program_running: while self.running: mouse.click(self.buttonDirection) time.sleep(self.delayTime) time.sleep(0.1)
6. Ebben a részben létrehozzuk az egérkattintáshoz szükséges szálat, majd elindítjuk a szálat.
Példa:
mouse = Controller() clickThread = ClickTheMouse(delayTime, buttonDirection) clickThread.start()
7. Ez az utolsó szakasz, ahol meghatározzuk a billentyűzet kattintásának funkcióját. Ha bármelyik billentyűt lenyomjuk, az argumentumként megy át ebben a függvényben, és különböző esetekkel ellenőrzi.
Ha ez a startStop gomb, akkor a program elindul vagy leáll. Ha ez a záró kulcs, akkor a program leáll.
Példa:
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()
Teljes példa:
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()
Magyarázat:
A fenti kódban a start és stop billentyűket 's'-ként, a befejező billentyűt pedig 'x'-ként inicializáltuk. Amikor lefuttatjuk a python szkriptet, és beírjuk az 's'-t, akkor automatikusan, valahányszor mozgatjuk az egeret a képernyőn, 0,001 másodperces vagy egy ezredmásodperces késleltetéssel a jobb gombbal kattintunk rá.
Az egérkattintás funkcióját a 2. részben módosíthatjuk, ahol a Button.left vagy a Button.center attribútum segítségével módosíthatjuk az egér kattintási irányát.
Ha könnyen szeretnénk látni az egérkattintást, akkor a delayTime értékét magasabbra állíthatjuk, hogy lássuk a tényleges kattintást. Ebben a kódban, ha nem mozgatjuk az egérkurzort a képernyőn, akkor nem fog kattintani. Csak akkor fog működni, ha mozgatjuk a kurzort a képernyőn.