最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用PyAutoGUI模擬鼠標(biāo)鍵盤操作實(shí)現(xiàn)消息發(fā)送

 更新時(shí)間:2026年04月21日 09:05:39   作者:yuanpan  
本文介紹了如何使用Python的PyAutoGUI庫(kù)模擬鼠標(biāo)和鍵盤操作,以微信為例,自動(dòng)打開軟件、搜索好友、輸入消息和發(fā)送消息,通過(guò)本文,讀者可以了解PyAutoGUI的核心思路,需要的朋友可以參考下

前言

在日常辦公中,我們經(jīng)常會(huì)遇到一些重復(fù)性的電腦操作,例如打開某個(gè)軟件、點(diǎn)擊固定位置、輸入一段文字、按下快捷鍵等。如果這些操作規(guī)則比較固定,就可以考慮使用 Python 進(jìn)行自動(dòng)化控制。

PyAutoGUI 是一個(gè)常用的 Python 自動(dòng)化操作庫(kù),它可以模擬鼠標(biāo)和鍵盤行為,例如移動(dòng)鼠標(biāo)、點(diǎn)擊按鈕、輸入文本、按下快捷鍵、截圖以及定位屏幕元素等。它的特點(diǎn)是使用簡(jiǎn)單、跨平臺(tái)能力較好,適合 Python 初學(xué)者學(xué)習(xí)桌面自動(dòng)化的基本思路。

本文將以電腦版微信為例,介紹如何使用 PyAutoGUI 模擬鼠標(biāo)和鍵盤操作,實(shí)現(xiàn)自動(dòng)打開微信、定位好友、輸入消息并發(fā)送。

需要注意的是,本文示例僅用于學(xué)習(xí)桌面自動(dòng)化技術(shù)和處理個(gè)人重復(fù)操作。請(qǐng)不要將自動(dòng)化腳本用于騷擾、群發(fā)垃圾消息或違反平臺(tái)規(guī)則的行為。

一、環(huán)境準(zhǔn)備

1. Python 環(huán)境

建議使用 Python 3.8 及以上版本??梢栽诿钚兄袌?zhí)行下面的命令查看 Python 版本:

python --version

如果可以正常輸出版本號(hào),例如 Python 3.11.0,說(shuō)明 Python 環(huán)境已經(jīng)安裝完成。

2. 安裝 PyAutoGUI

使用 pip 安裝 PyAutoGUI:

pip install pyautogui

如果安裝速度較慢,也可以使用國(guó)內(nèi)鏡像源:

pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple

安裝完成后,可以在 Python 中測(cè)試導(dǎo)入:

import pyautogui
print("PyAutoGUI 安裝成功")

如果沒有報(bào)錯(cuò),說(shuō)明環(huán)境準(zhǔn)備完成。

二、核心知識(shí)點(diǎn)

在編寫完整腳本之前,需要先了解 PyAutoGUI 的幾個(gè)基礎(chǔ)用法。

1. 獲取屏幕尺寸

import pyautogui

width, height = pyautogui.size()
print(width, height)

pyautogui.size() 會(huì)返回當(dāng)前屏幕的寬度和高度,單位是像素。

2. 獲取當(dāng)前鼠標(biāo)位置

import pyautogui

x, y = pyautogui.position()
print(x, y)

這個(gè)方法可以獲取鼠標(biāo)當(dāng)前所在位置的坐標(biāo)。后續(xù)自動(dòng)點(diǎn)擊微信好友、輸入框等位置時(shí),會(huì)用到這些坐標(biāo)。

3. 鼠標(biāo)移動(dòng)

import pyautogui

pyautogui.moveTo(500, 300, duration=0.5)

moveTo() 用于把鼠標(biāo)移動(dòng)到指定坐標(biāo)。duration 表示移動(dòng)過(guò)程持續(xù)的時(shí)間,單位是秒。

4. 鼠標(biāo)點(diǎn)擊

import pyautogui

pyautogui.click(500, 300)

click() 用于點(diǎn)擊指定坐標(biāo)。如果不傳坐標(biāo),則默認(rèn)點(diǎn)擊當(dāng)前鼠標(biāo)所在位置。

5. 鍵盤輸入

import pyautogui

pyautogui.write("Hello", interval=0.05)

write() 可以模擬鍵盤輸入英文字符。interval 表示每個(gè)字符之間的輸入間隔。

不過(guò),pyautogui.write() 對(duì)中文輸入支持并不穩(wěn)定。因此,在自動(dòng)發(fā)送中文消息時(shí),更推薦使用剪貼板方式:先把中文內(nèi)容復(fù)制到剪貼板,再模擬 Ctrl + V 粘貼。

6. 快捷鍵操作

import pyautogui

pyautogui.hotkey("ctrl", "v")
pyautogui.press("enter")

hotkey() 可以模擬組合鍵,press() 可以模擬單個(gè)按鍵。

7. 延遲等待

import time

time.sleep(1)

桌面自動(dòng)化腳本經(jīng)常需要等待窗口打開、頁(yè)面加載、軟件響應(yīng),因此合理加入延遲非常重要。

三、實(shí)戰(zhàn)案例:自動(dòng)控制電腦版微信發(fā)送消息

本案例的目標(biāo)是:

  1. 打開電腦版微信。
  2. 點(diǎn)擊微信搜索框。
  3. 輸入好友名稱。
  4. 點(diǎn)擊搜索結(jié)果中的好友。
  5. 在聊天輸入框中輸入消息。
  6. 自動(dòng)發(fā)送消息。

由于不同電腦的屏幕分辨率、微信窗口大小、縮放比例可能不同,腳本中的坐標(biāo)需要根據(jù)自己的電腦進(jìn)行調(diào)整。

四、獲取坐標(biāo)的方法

在運(yùn)行自動(dòng)化腳本前,建議先獲取幾個(gè)關(guān)鍵位置的坐標(biāo):

  • 微信搜索框坐標(biāo)
  • 搜索結(jié)果中的好友坐標(biāo)
  • 聊天輸入框坐標(biāo)

可以使用下面的小工具查看鼠標(biāo)實(shí)時(shí)坐標(biāo):

import pyautogui
import time

print("請(qǐng)將鼠標(biāo)移動(dòng)到目標(biāo)位置,按 Ctrl + C 結(jié)束程序")

try:
    while True:
        x, y = pyautogui.position()
        print(f"當(dāng)前鼠標(biāo)坐標(biāo):x={x}, y={y}", end="\r")
        time.sleep(0.1)
except KeyboardInterrupt:
    print("\n坐標(biāo)獲取結(jié)束")

運(yùn)行程序后,把鼠標(biāo)移動(dòng)到目標(biāo)位置,就可以看到實(shí)時(shí)坐標(biāo)。記錄這些坐標(biāo)后,填入后面的完整代碼即可。

五、完整可運(yùn)行代碼示例

下面的代碼使用 PyAutoGUI 自動(dòng)打開電腦版微信,并向指定好友發(fā)送一條消息。

在運(yùn)行代碼之前,請(qǐng)先根據(jù)自己的電腦修改:

  • WECHAT_PATH
  • SEARCH_BOX_POS
  • FRIEND_RESULT_POS
  • INPUT_BOX_POS
  • FRIEND_NAME
  • MESSAGE
import os
import time
import pyautogui
import pyperclip


# =========================
# 1. 基礎(chǔ)配置
# =========================

# 電腦版微信的安裝路徑,需要根據(jù)自己的電腦實(shí)際情況修改
# 常見路徑示例:
# C:\Program Files\Tencent\WeChat\WeChat.exe
# C:\Program Files (x86)\Tencent\WeChat\WeChat.exe
WECHAT_PATH = r"C:\Program Files\Tencent\WeChat\WeChat.exe"

# 需要發(fā)送消息的好友名稱
FRIEND_NAME = "文件傳輸助手"

# 需要發(fā)送的消息內(nèi)容
MESSAGE = "你好,這是一條使用 Python 和 PyAutoGUI 自動(dòng)發(fā)送的測(cè)試消息。"

# 微信搜索框坐標(biāo),需要根據(jù)自己的電腦修改
SEARCH_BOX_POS = (160, 40)

# 搜索結(jié)果中好友的位置坐標(biāo),需要根據(jù)自己的電腦修改
FRIEND_RESULT_POS = (170, 140)

# 聊天輸入框坐標(biāo),需要根據(jù)自己的電腦修改
INPUT_BOX_POS = (520, 720)

# 每次操作后的等待時(shí)間,防止軟件響應(yīng)較慢導(dǎo)致操作失敗
WAIT_TIME = 1


# =========================
# 2. 安全設(shè)置
# =========================

# PyAutoGUI 的安全保護(hù)機(jī)制:
# 如果鼠標(biāo)快速移動(dòng)到屏幕左上角,程序會(huì)拋出異常并停止運(yùn)行
pyautogui.FAILSAFE = True

# 每個(gè) PyAutoGUI 操作之間自動(dòng)暫停 0.2 秒
pyautogui.PAUSE = 0.2


def open_wechat():
    """打開電腦版微信。"""

    # 判斷微信程序是否存在
    if not os.path.exists(WECHAT_PATH):
        raise FileNotFoundError(f"未找到微信程序,請(qǐng)檢查路徑是否正確:{WECHAT_PATH}")

    # 使用 os.startfile 打開 Windows 程序
    os.startfile(WECHAT_PATH)

    # 等待微信窗口啟動(dòng)
    time.sleep(3)


def paste_text(text):
    """通過(guò)剪貼板粘貼文本,適合輸入中文內(nèi)容。"""

    # 將文本復(fù)制到系統(tǒng)剪貼板
    pyperclip.copy(text)

    # 模擬 Ctrl + V 粘貼
    pyautogui.hotkey("ctrl", "v")

    # 等待文本粘貼完成
    time.sleep(0.5)


def select_friend(friend_name):
    """通過(guò)搜索框定位并打開指定好友聊天窗口。"""

    # 點(diǎn)擊微信搜索框
    pyautogui.click(*SEARCH_BOX_POS)
    time.sleep(WAIT_TIME)

    # 先清空搜索框中可能存在的內(nèi)容
    pyautogui.hotkey("ctrl", "a")
    pyautogui.press("backspace")
    time.sleep(0.5)

    # 輸入好友名稱。中文內(nèi)容使用剪貼板粘貼更穩(wěn)定
    paste_text(friend_name)
    time.sleep(WAIT_TIME)

    # 點(diǎn)擊搜索結(jié)果中的好友
    pyautogui.click(*FRIEND_RESULT_POS)
    time.sleep(WAIT_TIME)


def send_message(message):
    """在聊天輸入框中輸入并發(fā)送消息。"""

    # 點(diǎn)擊聊天輸入框
    pyautogui.click(*INPUT_BOX_POS)
    time.sleep(0.5)

    # 輸入消息內(nèi)容
    paste_text(message)
    time.sleep(0.5)

    # 按下 Enter 發(fā)送消息
    pyautogui.press("enter")


def main():
    """主函數(shù):按順序執(zhí)行自動(dòng)化流程。"""

    # 打開電腦版微信
    open_wechat()

    # 搜索并打開指定好友
    select_friend(FRIEND_NAME)

    # 輸入并發(fā)送消息
    send_message(MESSAGE)

    print("消息發(fā)送流程執(zhí)行完成")


if __name__ == "__main__":
    main()

六、代碼說(shuō)明

1. 為什么使用 pyperclip

pyautogui.write() 更適合輸入英文和數(shù)字。如果直接輸入中文,可能會(huì)受到輸入法狀態(tài)、系統(tǒng)語(yǔ)言、焦點(diǎn)位置等因素影響。

因此,代碼中使用 pyperclip.copy() 先把中文復(fù)制到剪貼板,再通過(guò) pyautogui.hotkey("ctrl", "v") 粘貼到微信輸入框。這樣輸入中文消息會(huì)更加穩(wěn)定。

2. 為什么要加入 time.sleep

桌面軟件不是瞬間響應(yīng)的。例如微信啟動(dòng)、搜索好友、切換聊天窗口都需要一定時(shí)間。如果腳本執(zhí)行太快,可能會(huì)出現(xiàn)窗口還沒打開就開始點(diǎn)擊、搜索結(jié)果還沒加載就開始選擇等問題。

所以代碼中在關(guān)鍵步驟后加入了 time.sleep(),用于提高腳本穩(wěn)定性。

3. 為什么需要修改坐標(biāo)

PyAutoGUI 主要基于屏幕坐標(biāo)進(jìn)行操作。不同電腦的屏幕分辨率、縮放比例、微信窗口位置不同,同一個(gè)按鈕的坐標(biāo)也會(huì)不同。

因此,示例代碼中的坐標(biāo)只是參考值。實(shí)際運(yùn)行前,必須先使用坐標(biāo)獲取工具重新確認(rèn)坐標(biāo)。

七、注意事項(xiàng)

1. 坐標(biāo)獲取要準(zhǔn)確

運(yùn)行腳本前,建議先固定微信窗口位置和大小,然后使用坐標(biāo)獲取工具記錄搜索框、好友搜索結(jié)果、聊天輸入框的位置。

如果微信窗口移動(dòng)了,原來(lái)的坐標(biāo)可能就不再準(zhǔn)確。

2. 開啟安全保護(hù)

PyAutoGUI 默認(rèn)支持 Fail-Safe 機(jī)制。當(dāng)程序失控時(shí),可以把鼠標(biāo)快速移動(dòng)到屏幕左上角,腳本會(huì)自動(dòng)拋出異常并停止。

代碼中建議保留:

pyautogui.FAILSAFE = True

不要隨意關(guān)閉這個(gè)安全設(shè)置。

3. 避免誤操作

在執(zhí)行自動(dòng)化腳本前,應(yīng)關(guān)閉不相關(guān)窗口,確保微信處于可操作狀態(tài)。否則腳本可能點(diǎn)擊到其他窗口,造成誤操作。

建議先把消息發(fā)送給“文件傳輸助手”進(jìn)行測(cè)試,確認(rèn)流程穩(wěn)定后,再用于其他個(gè)人場(chǎng)景。

4. 不要用于批量騷擾

自動(dòng)化工具應(yīng)當(dāng)用于提高個(gè)人效率,而不是用于批量發(fā)送廣告、騷擾他人或規(guī)避平臺(tái)規(guī)則。使用自動(dòng)化腳本時(shí),應(yīng)遵守軟件平臺(tái)規(guī)則和相關(guān)法律法規(guī)。

5. 確認(rèn)微信路徑

如果運(yùn)行代碼時(shí)報(bào)錯(cuò)“未找到微信程序”,說(shuō)明 WECHAT_PATH 配置不正確。可以右鍵微信快捷方式,查看目標(biāo)路徑,然后復(fù)制到代碼中。

八、總結(jié)

本文介紹了如何使用 Python 的 PyAutoGUI 庫(kù)模擬鼠標(biāo)和鍵盤操作,并以電腦版微信為例,實(shí)現(xiàn)了自動(dòng)打開軟件、搜索好友、輸入消息和發(fā)送消息的完整流程。

通過(guò)這個(gè)案例可以看到,PyAutoGUI 的核心思路并不復(fù)雜:先確定操作位置,再按照人工操作順序編寫腳本。對(duì)于一些規(guī)則固定、重復(fù)性較高的桌面操作,PyAutoGUI 是一個(gè)非常實(shí)用的自動(dòng)化工具。

不過(guò),基于坐標(biāo)的自動(dòng)化方式對(duì)窗口位置和屏幕環(huán)境比較敏感。在實(shí)際使用中,應(yīng)當(dāng)注意坐標(biāo)準(zhǔn)確性、操作延遲和安全保護(hù),避免腳本誤操作。

以上就是Python使用PyAutoGUI模擬鼠標(biāo)鍵盤操作實(shí)現(xiàn)消息發(fā)送的詳細(xì)內(nèi)容,更多關(guān)于Python PyAutoGUI模擬鼠標(biāo)鍵盤操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python OOP類中的幾種函數(shù)或方法總結(jié)

    Python OOP類中的幾種函數(shù)或方法總結(jié)

    今天小編就為大家分享一篇關(guān)于Python OOP類中的幾種函數(shù)或方法總結(jié),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • Python內(nèi)置函數(shù)issubclass()的具體使用

    Python內(nèi)置函數(shù)issubclass()的具體使用

    issubclass()是Python中一個(gè)非常有用的內(nèi)置函數(shù),它提供了一種簡(jiǎn)單的方式來(lái)檢查類的繼承關(guān)系,本文主要介紹了Python內(nèi)置函數(shù)issubclass()的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2007-03-03
  • Python實(shí)現(xiàn)結(jié)構(gòu)化日志系統(tǒng)的完整方案和最佳實(shí)踐

    Python實(shí)現(xiàn)結(jié)構(gòu)化日志系統(tǒng)的完整方案和最佳實(shí)踐

    在現(xiàn)代軟件系統(tǒng)中,日志不僅是調(diào)試和問題排查的工具,更是系統(tǒng)可觀測(cè)性的核心組成部分,本文將深入探討結(jié)構(gòu)化日志系統(tǒng)的設(shè)計(jì)原理、實(shí)現(xiàn)方法和最佳實(shí)踐,提供完整的Python實(shí)現(xiàn)方案,希望對(duì)大家有所幫助
    2025-12-12
  • Python實(shí)現(xiàn)單例模式的五種寫法總結(jié)

    Python實(shí)現(xiàn)單例模式的五種寫法總結(jié)

    單例模式(Singleton Pattern) 是一種常用的軟件設(shè)計(jì)模式,該模式的主要目的是確保某一個(gè)類只有一個(gè)實(shí)例存在。本文為大家整理了五種Python實(shí)現(xiàn)單例模式的寫法,需要的可以參考一下
    2022-08-08
  • Python PIL讀取的圖像發(fā)生自動(dòng)旋轉(zhuǎn)的實(shí)現(xiàn)方法

    Python PIL讀取的圖像發(fā)生自動(dòng)旋轉(zhuǎn)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python PIL讀取的圖像發(fā)生自動(dòng)旋轉(zhuǎn)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python編程之微信推送模板消息功能示例

    Python編程之微信推送模板消息功能示例

    這篇文章主要介紹了Python編程之微信推送模板消息功能,結(jié)合實(shí)例形式分析了Python微信推送消息接口的調(diào)用相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • Python中計(jì)算相似度的方法詳解

    Python中計(jì)算相似度的方法詳解

    計(jì)算相似度是許多機(jī)器學(xué)習(xí)和數(shù)據(jù)分析任務(wù)中的重要步驟,尤其是在推薦系統(tǒng)、文本分析和圖像處理等領(lǐng)域,下面我們就來(lái)看看具體的實(shí)現(xiàn)方法吧
    2025-02-02
  • python類中super() 的使用解析

    python類中super() 的使用解析

    super() 函數(shù)是用于調(diào)用父類(超類)的一個(gè)方法。這篇文章主要介紹了python類中super() 的使用,需要的朋友可以參考下
    2019-12-12
  • ubuntu 18.04 安裝opencv3.4.5的教程(圖解)

    ubuntu 18.04 安裝opencv3.4.5的教程(圖解)

    這篇文章主要介紹了ubuntu 18.04 安裝opencv3.4.5的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 基于Python進(jìn)行Word文檔模板自動(dòng)化處理操作完整指南

    基于Python進(jìn)行Word文檔模板自動(dòng)化處理操作完整指南

    在日常辦公和文檔處理工作中,我們經(jīng)常需要根據(jù)模板生成大量相似結(jié)構(gòu)的Word文檔,本文將深入介紹如何實(shí)現(xiàn)Word文檔模板的自動(dòng)化處理,從占位符提取到智能填充的完整流程,希望對(duì)大家有所幫助
    2025-10-10

最新評(píng)論

洞头县| 团风县| 大兴区| 哈密市| 南京市| 南靖县| 张家港市| 黄浦区| 祁门县| 通化市| 边坝县| 兴和县| 澄江县| 峨眉山市| 汉阴县| 龙海市| 宝兴县| 丘北县| 金湖县| 大邑县| 乌拉特前旗| 余姚市| 辉南县| 顺昌县| 新余市| 建瓯市| 防城港市| 常州市| 宁明县| 南江县| 乐东| 天等县| 益阳市| 绥芬河市| 枣强县| 芮城县| 凤山市| 腾冲县| 云阳县| 恩平市| 随州市|