亞洲資本網(wǎng) > 資訊 > 要聞 > 正文
用Python制作一個(gè)自動(dòng)點(diǎn)擊器,三種模塊都可以
2023-08-27 04:57:26來(lái)源: 博客園

顧名思義,Python中的自動(dòng)點(diǎn)擊器是一個(gè)簡(jiǎn)單的Python應(yīng)用程序,可以按照用戶的要求重復(fù)點(diǎn)擊鼠標(biāo)。不同的參數(shù),如速度、頻率和位置,可以根據(jù)用戶的要求進(jìn)行改變。


(資料圖片)

Python有不同的模塊可用于控制鍵盤、鼠標(biāo)等設(shè)備。因此,我們可以使用這些模塊在Python中輕松創(chuàng)建一個(gè)自動(dòng)點(diǎn)擊器。

本教程將展示在Python中創(chuàng)建一個(gè)自動(dòng)點(diǎn)擊器的不同方法。

1.使用pyautogui 模塊

pyautogui 模塊可以創(chuàng)建控制設(shè)備的鼠標(biāo)和鍵盤的腳本。

我們可以使用pyautogui.click() 函數(shù)來(lái)點(diǎn)擊鼠標(biāo)。我們可以使用pyautogui.moveTo() 函數(shù)事先將鼠標(biāo)移動(dòng)到需要的位置,并指定光標(biāo)的坐標(biāo)。

為了用這些函數(shù)創(chuàng)建一個(gè)自動(dòng)點(diǎn)擊器,我們將移動(dòng)鼠標(biāo)并運(yùn)行一個(gè)for 循環(huán)來(lái)執(zhí)行每個(gè)迭代的pyautogui.click() 函數(shù)。我們還將在每次點(diǎn)擊前稍作延遲,使之可見。

我們將使用time 模塊中的sleep() 函數(shù)進(jìn)行延遲。

我們?cè)谙旅娴拇a中實(shí)現(xiàn)自動(dòng)點(diǎn)擊器的邏輯。

import pyautoguiimport timepyautogui.moveTo(600, 800)for i in range(20):    time.sleep(0.1)    pyautogui.click()

在上面的例子中,我們將光標(biāo)移動(dòng)到坐標(biāo)(600,800) ,并使用click() 函數(shù)點(diǎn)擊鼠標(biāo)20次。

使用win32api

win32api 是用來(lái)控制和自動(dòng)化Windows COM對(duì)象的。我們可以使用win32con 模塊中的這些對(duì)象并模仿鼠標(biāo)點(diǎn)擊。

為此,我們使用win32api.mouse_event 函數(shù)兩次,一次用于win32con.MOUSEEVENTF_LEFTDOWN,另一次用于win32con.MOUSEEVENTF_LEFTDOWN來(lái)模仿鼠標(biāo)點(diǎn)擊。

我們將用win23api.SetCursorPos() 函數(shù)將光標(biāo)的位置設(shè)置為所需的坐標(biāo)。然后,我們將使用與前面方法類似的方法,在Python中創(chuàng)建一個(gè)自動(dòng)點(diǎn)擊器。

請(qǐng)看下面的代碼。

import win32api, win32conimport timewin32api.SetCursorPos((600,800))for i in range(20):    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,600,800,0,0)    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,600,800,0,0)    time.sleep(0.1)

3.使用pynput 模塊

我們也有pynput ,用于在Python腳本中實(shí)現(xiàn)鼠標(biāo)和鍵盤動(dòng)作的自動(dòng)化。這個(gè)方法與前兩個(gè)不同,因?yàn)槲覀儗?chuàng)建一個(gè)具有必要功能的類來(lái)創(chuàng)建一個(gè)自動(dòng)點(diǎn)擊器。

我們將創(chuàng)建一個(gè)類,當(dāng)一個(gè)特定的鍵被按下時(shí),它將充當(dāng)一個(gè)自動(dòng)點(diǎn)擊器。另一個(gè)鍵將被分配來(lái)停止點(diǎn)擊。

我們將需要導(dǎo)入pynput.mouse 和pynput.keyboard 模塊。

創(chuàng)建的類將擴(kuò)展到threading.Thread 類,這樣我們就可以用不同的功能來(lái)控制線程。

在該類的__init__ 方法中,我們將像之前那樣指定每次點(diǎn)擊之間的輕微延遲,并提到我們將使用Button.Left 對(duì)象點(diǎn)擊鼠標(biāo)的左鍵。

線程將一直運(yùn)行,直到停止點(diǎn)擊的鍵被按下。我們將使用threading.Thread 類的start() 方法來(lái)開始點(diǎn)擊。

在running() 方法中,我們也將使用Controller 類對(duì)象。

為了啟動(dòng)和停止線程,我們將創(chuàng)建一個(gè)函數(shù)。Listener() 函數(shù)將執(zhí)行定義的函數(shù),同時(shí)使用on_press 參數(shù)按下按鍵。

這個(gè)邏輯在下面的代碼中實(shí)現(xiàn)。

import timeimport threadingfrom pynput.mouse import Button, Controllerfrom pynput.keyboard import Listener, KeyCodestart_end = KeyCode(char="a")exit_key = KeyCode(char="z")class auto_clicker_class(threading.Thread):    def __init__(self):        super(auto_clicker_class, self).__init__()        self.delay = 0.1        self.button = Button.left        self.running = False        self.program_run = True    def begin_clicking(self):        self.running = True    def clicking_stop(self):        self.running = False    def exit(self):        self.clicking_stop()        self.program_run = False    def run(self):        while self.program_run:            while self.running:                mouse_ob.click(self.button)                time.sleep(self.delay)            time.sleep(0.1)mouse_ob = Controller()t = auto_clicker_class()t.start()#Python小白學(xué)習(xí)交流群:725638078def fun(k):    if k == start_end:        if t.running:            t.clicking_stop()        else:            t.begin_clicking()    elif k == exit_key:        t.exit()        listener.stop()with Listener(on_press=fun) as listener:    listener.join()

總結(jié)

我們?cè)诒窘坛讨杏懻摿俗詣?dòng)點(diǎn)擊器。前兩種方法相對(duì)簡(jiǎn)單,因?yàn)槲覀兪褂胒or 循環(huán)執(zhí)行了一個(gè)重復(fù)多次的函數(shù)來(lái)模仿鼠標(biāo)的點(diǎn)擊。

最后一種方法是在Python中創(chuàng)建一個(gè)適當(dāng)?shù)淖詣?dòng)點(diǎn)擊器腳本,它可以根據(jù)鍵盤上的按鍵開始和停止點(diǎn)擊。

關(guān)鍵詞:

專題新聞
  • 奧瑞金(002701)6月30日股東戶數(shù)4.95萬(wàn)戶,較上期增加4.84%
  • 推進(jìn)多式聯(lián)運(yùn)高質(zhì)量發(fā)展 服務(wù)支撐實(shí)現(xiàn)“物暢其流”——透視多式聯(lián)運(yùn)“一單制”“一箱制”發(fā)展
  • 模擬人生醫(yī)院在哪里(模擬人生醫(yī)院在哪個(gè)地圖)
  • 成都車展:寶馬XM50e/XM Label Red上市
  • 中信重工(601608.SH):二季度計(jì)提各類資產(chǎn)減值準(zhǔn)備5602.90萬(wàn)元
  • “二鍋頭”業(yè)績(jī)爆雷,高毅資產(chǎn)虧大了!能效達(dá)傳統(tǒng)芯片14倍,IBM開發(fā)出新AI芯片(附概念股)
最近更新

京ICP備2021034106號(hào)-51

Copyright © 2011-2020  亞洲資本網(wǎng)   All Rights Reserved. 聯(lián)系網(wǎng)站:55 16 53 8 @qq.com