如何用Python卡点发指定祝福?

自己想要给自己的几个好朋友卡点发祝福,而且给每个人的祝福语都是单独写的。之前都是当天先在聊天框里打好草稿,然后卡点了一个一个点“发送”,但是一不小心就…
关注者
3
被浏览
377
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

默认你说的是微信。发祝福可能也就是发一次,所以用模拟按键或者发送Windows消息是最省开发时间的。模拟按键这样的速度可能就达不到你所说的“同时”了,但是你说只发几个朋友的话,半分钟一分钟内发完是没问题的。

用time模块获取当前本地时间

import time
time.localtime()
# time.struct_time(tm_year=2022, tm_mon=1, tm_mday=22, tm_hour=10, 
# tm_min=11, tm_sec=52, tm_wday=5, tm_yday=22, tm_isdst=0)
# 用“.”可以访问属性

当时间吻合,执行发送。

import pyautogui as pag
import win32gui, win32con
def find(friendname, findtime=1.8):
        p_hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
        win32gui.ShowWindow(p_hwnd, win32con.SW_RESTORE)
        pag.press('alt')
        win32gui.SetForegroundWindow(p_hwnd)
        time.sleep(1)
        pag.hotkey('ctrl', 'f')
        time.sleep(0.8)
        # pag.hotkey('ctrl','v') | pag.typewrite(friendname)
        _write(friendname)
        time.sleep(findtime)
        pag.press('enter')
        time.sleep(1)

写个find函数找好友。通过窗口类名[1]或标题获得句柄,将窗口展示到前面并聚焦,输入好友名搜索,打开聊天框。

这里输入好友名可以粘贴或者pag.typewrite,然而typewrite不支持中文,所以我就写了个_write函数。

def _write(text):
        phwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
        for i in text:
            win32api.PostMessage(phwnd, win32con.WM_CHAR, ord(i), 0)

发Windows消息,这样的输入速度非常快。

逻辑也就明了了,时间没到就等待,时间到后先find,再_write输入祝福语,最后用pag.hotkey('alt', 's')发送。

整个程序就是find拖慢了速度,建议结合自己电脑实际情况,因地制宜修改一下find函数

参考

  1. ^窗口类名可以用VS的Spy++获得