基于Python實(shí)現(xiàn)自動(dòng)點(diǎn)擊器
顧名思義,Python 中的自動(dòng)點(diǎn)擊器是一個(gè)簡(jiǎn)單的 Python 應(yīng)用程序,它根據(jù)用戶要求重復(fù)單擊鼠標(biāo)。 不同的參數(shù),如速度、頻率和位置,可以根據(jù)用戶進(jìn)行更改。
Python 有不同的模塊可用于控制鍵盤(pán)、鼠標(biāo)等設(shè)備。因此,我們可以使用這些模塊輕松地在 Python 中創(chuàng)建自動(dòng)點(diǎn)擊器。
本篇文章將介紹在 Python 中創(chuàng)建自動(dòng)答題器的不同方法。
使用 pyautogui 模塊在 Python 中創(chuàng)建自動(dòng)點(diǎn)擊器
pyautogui 模塊可以創(chuàng)建控制設(shè)備的鼠標(biāo)和鍵盤(pán)的腳本。
我們可以使用 pyautogui.click() 函數(shù)來(lái)單擊鼠標(biāo)。 我們可以使用 pyautogui.moveTo() 函數(shù)預(yù)先將鼠標(biāo)移動(dòng)到所需位置,并指定光標(biāo)的坐標(biāo)。
要使用這些函數(shù)創(chuàng)建自動(dòng)點(diǎn)擊器,我們將移動(dòng)鼠標(biāo)并運(yùn)行 for 循環(huán)來(lái)執(zhí)行每次迭代的 pyautogui.click() 函數(shù)。 我們還會(huì)在每次點(diǎn)擊之前稍微延遲以使其可見(jiàn)。
我們將使用 time 模塊中的 sleep() 函數(shù)來(lái)進(jìn)行延遲。
我們?cè)谙旅娴拇a中實(shí)現(xiàn)自動(dòng)點(diǎn)擊器的邏輯。
import pyautogui
import time
pyautogui.moveTo(600, 800)
for i in range(20):
time.sleep(0.1)
pyautogui.click()
在上面的示例中,我們將光標(biāo)移動(dòng)到坐標(biāo)(600,800)并使用 click() 函數(shù)單擊鼠標(biāo) 20 次。
使用 win32api 在 Python 中創(chuàng)建自動(dòng)點(diǎn)擊器
win32api 用于控制和自動(dòng)化 Windows COM 對(duì)象。 我們可以使用 win32con 模塊中的這些對(duì)象并模擬鼠標(biāo)單擊。
為此,我們使用 win32api.mouse_event 函數(shù)兩次,一次用于 win32con.MOUSEEVENTF_LEFTDOWN,另一次用于 win32con.MOUSEEVENTF_LEFTDOWN 來(lái)模擬鼠標(biāo)單擊。
我們將使用 win23api.SetCursorPos() 函數(shù)將光標(biāo)的位置設(shè)置為所需的坐標(biāo)。 然后,我們將使用與之前方法類(lèi)似的方法在 Python 中創(chuàng)建自動(dòng)點(diǎn)擊器。
請(qǐng)參閱下面的代碼。
import win32api, win32con
import time
win32api.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)
使用 pynput 模塊在 Python 中創(chuàng)建自動(dòng)點(diǎn)擊器
我們還有 pynput 用于在 Python 腳本中自動(dòng)執(zhí)行鼠標(biāo)和鍵盤(pán)操作。 此方法與前兩種方法不同,因?yàn)槲覀儗?chuàng)建一個(gè)具有創(chuàng)建自動(dòng)點(diǎn)擊器所需功能的類(lèi)。
我們將創(chuàng)建一個(gè)類(lèi),當(dāng)按下特定鍵時(shí),它將充當(dāng)自動(dòng)點(diǎn)擊器。 將分配另一個(gè)鍵來(lái)停止點(diǎn)擊。
我們需要導(dǎo)入 pynput.mouse 和 pynput.keyboard 模塊。
創(chuàng)建的類(lèi)將擴(kuò)展為threading.Thread類(lèi),以便我們可以控制具有不同功能的線程。
在類(lèi)的 __init__ 方法中,我們將像之前一樣指定每次單擊之間的輕微延遲,并提到我們將使用 Button.Left 對(duì)象單擊鼠標(biāo)左鍵。
線程將繼續(xù)運(yùn)行,直到按下停止點(diǎn)擊的鍵為止。 我們將使用 threading.Thread 類(lèi)的 start() 方法來(lái)開(kāi)始單擊。
在 running() 方法中,我們還將使用 Controller 類(lèi)對(duì)象。
為了啟動(dòng)和停止線程,我們將創(chuàng)建一個(gè)函數(shù)。 Listener() 函數(shù)將在使用 on_press 參數(shù)按下按鍵時(shí)執(zhí)行定義的函數(shù)。
這個(gè)邏輯在下面的代碼中實(shí)現(xiàn)。
import time
import threading
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode
start_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()
def 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)槲覀兪褂?for 循環(huán)重復(fù)執(zhí)行一個(gè)函數(shù)多次來(lái)模擬鼠標(biāo)單擊。
最后一種方法在 Python 中創(chuàng)建一個(gè)適當(dāng)?shù)淖詣?dòng)點(diǎn)擊器腳本,可以根據(jù)鍵盤(pán)上按下的鍵開(kāi)始和停止點(diǎn)擊。
到此這篇關(guān)于基于Python實(shí)現(xiàn)自動(dòng)點(diǎn)擊器的文章就介紹到這了,更多相關(guān)Python點(diǎn)擊器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Matplotlib條形圖之垂直條形圖和水平條形圖詳解
這篇文章主要為大家詳細(xì)介紹了Python Matplotlib條形圖之垂直條形圖和水平條形圖,使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
python3 os進(jìn)行嵌套操作的實(shí)例講解
在本篇文章里小編給大家整理了關(guān)于python3 os進(jìn)行嵌套操作的實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-11-11
python 如何對(duì)Series中的每一個(gè)數(shù)據(jù)做運(yùn)算
這篇文章主要介紹了python 實(shí)現(xiàn)對(duì)Series中的每一個(gè)數(shù)據(jù)做運(yùn)算操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python內(nèi)置debug庫(kù)pdb用法示例詳解
這篇文章主要介紹了Python內(nèi)置debug庫(kù)pdb用法的相關(guān)資料,Python的內(nèi)置調(diào)試器pdb可以有效幫助開(kāi)發(fā)者掌握程序執(zhí)行流程和變量狀態(tài),通過(guò)插入pdb.set_trace()設(shè)置斷點(diǎn),或直接從命令行啟動(dòng)pdb,可以進(jìn)入交互式調(diào)試模式,需要的朋友可以參考下2024-11-11
ansible-playbook實(shí)現(xiàn)自動(dòng)部署KVM及安裝python3的詳細(xì)教程
這篇文章主要介紹了ansible-playbook實(shí)現(xiàn)自動(dòng)部署KVM及安裝python3的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
python+Django實(shí)現(xiàn)防止SQL注入的辦法
這篇文章主要介紹了python+Django實(shí)現(xiàn)防止SQL注入的辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
python操作excel之openpyxl模塊讀寫(xiě)xlsx格式使用方法詳解
這篇文章主要介紹了python操作excel之openpyxl模塊讀寫(xiě)xlsx格式使用方法詳解,需要的朋友可以參考下2022-12-12
Python實(shí)現(xiàn)學(xué)校管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)學(xué)校管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

