X黑手网
X黑手网
X黑手网

Pyrhon写定时群发微信消息工具

前言

主要功能是创建一个窗口应用程序,用于定时自动发送微信消息。提供了微信号、发送内容和延迟发送时间的输入框,以及倒计时标签和发送按钮。用户可以在微信号输入框中输入要发送消息的微信号,多个微信号之间用逗号分隔。在发送内容输入框中输入要发送的消息内容。延迟发送时间输入框用于设置发送消息的延迟时间,以秒为单位。当用户点击发送按钮时,定时器启动,开始倒计时。倒计时的时间由延迟发送时间确定,倒计时期间,倒计时标签会显示剩余时间。当倒计时结束时,自动触发发送微信消息的操作。发送微信消息的操作会查找微信窗口,设置剪贴板文本,模拟按键发送消息。此外,该应用程序还提供了一个重复发送按钮,点击该按钮后会重复执行发送微信消息的操作。在每次发送完成后,根据设定的延迟时间,会再次触发发送操作,实现定时自动发送微信消息的功能。

代码

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton
from PyQt5.QtCore import QTimer  # 导入 QTimer

import pyautogui
import time
import win32api
import win32con
import win32gui
import pyperclip

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("定时自动发微信-更多源码关注微信公众号:蓝胖子之家")
        self.setGeometry(100, 100, 500, 300)
        self.setStyleSheet("background-color: #F0F0F0;")

        wxid_label = QLabel("微信号(多个用逗号分隔):", self)
        wxid_label.setGeometry(50, 50, 200, 30)

        self.wxid_entry = QLineEdit(self)
        self.wxid_entry.setGeometry(250, 50, 200, 30)

        sendtext_label = QLabel("发送内容:", self)
        sendtext_label.setGeometry(50, 100, 200, 30)

        self.sendtext_entry = QLineEdit(self)
        self.sendtext_entry.setGeometry(250, 100, 200, 30)

        delay_label = QLabel("延迟发送(秒):", self)
        delay_label.setGeometry(50, 150, 200, 30)

        self.delay_entry = QLineEdit(self)
        self.delay_entry.setGeometry(250, 150, 200, 30)

        self.countdown_label = QLabel("", self)
        self.countdown_label.setGeometry(250, 180, 200, 30)

        send_button = QPushButton("发送", self)
        send_button.setGeometry(200, 220, 100, 30)
        send_button.setStyleSheet("background-color: #4CAF50; color: white; border-radius: 5px")
        send_button.clicked.connect(self.start_countdown)  # 连接按钮点击事件

        repeat_button = QPushButton("重复发送", self)
        repeat_button.setGeometry(320, 220, 100, 30)
        repeat_button.setStyleSheet("background-color: #FF0000; color: white; border-radius: 5px")
        repeat_button.clicked.connect(self.repeat_send)  # 连接按钮点击事件

        # 添加计时器
        self.countdown_timer = QTimer(self)
        self.countdown_timer.timeout.connect(self.countdown_tick)

    def FindWindow(self, chatroom):
        win = win32gui.FindWindow('WeChatMainWndForPC', chatroom)
        if win != 0:
            win32gui.ShowWindow(win, win32con.SW_SHOWMINIMIZED)
            win32gui.ShowWindow(win, win32con.SW_SHOWNORMAL)
            win32gui.ShowWindow(win, win32con.SW_SHOW)
            win32gui.SetWindowPos(win, win32con.HWND_TOP, 0, 0, 500, 700, win32con.SWP_SHOWWINDOW)
            win32gui.SetForegroundWindow(win)
            time.sleep(1)
            tit = win32gui.GetWindowText(win)
            print('已启动``oaicite:{"number":1,"invalid_reason":"Malformed citation 【'+str(tit)+'】"}``窗口')
        else:
            print('找不到``oaicite:{"number":2,"invalid_reason":"Malformed citation 【%s】"}``窗口' % chatroom)
            exit()

    def ClipboardText(self, ClipboardText):
        pyperclip.copy(ClipboardText)
        time.sleep(1)
        win32api.keybd_event(17, 0, 0, 0)
        win32api.keybd_event(86, 0, 0, 0)
        win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)

    def SendMsg(self):
        win32api.keybd_event(18, 0, 0, 0)
        win32api.keybd_event(83, 0, 0, 0)
        win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)

    def SendWxMsg(self):
        wxids = self.wxid_entry.text().split(',')
        sendtext = self.sendtext_entry.text()
        for wxid in wxids:
            self.FindWindow('微信')
            time.sleep(1)
            pyautogui.moveTo(143, 39)
            pyautogui.click()
            self.ClipboardText(wxid.strip())
            time.sleep(1)
            pyautogui.moveTo(155, 120)
            pyautogui.click()
            self.ClipboardText(sendtext)
            self.SendMsg()
            print('已发送给微信号``oaicite:{"number":1,"invalid_reason":"Malformed citation 【'+wxid.strip()+'】"}``')
            time.sleep(1)
            pyautogui.moveTo(683, 16)
            pyautogui.click()

    def countdown_tick(self):
        remaining_time = int(self.countdown_label.text())
        if remaining_time <= 0:
            self.countdown_timer.stop()
            self.SendWxMsg()
        else:
            remaining_time -= 1
            self.countdown_label.setText(str(remaining_time))

    def start_countdown(self):
        remaining_time = int(self.delay_entry.text())
        self.countdown_label.setText(str(remaining_time))
        self.countdown_timer.start(1000)  # 1秒的计时器间隔

    def repeat_send(self):
        remaining_time = int(self.delay_entry.text())
        self.countdown_label.setText(str(remaining_time))
        self.countdown_timer.start(1000)  # 1秒的计时器间隔
        self.SendWxMsg()
        QTimer.singleShot(int(self.delay_entry.text()) * 1000, self.repeat_send)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

代码使用PyQt5库编写了一个定时自动发送微信消息的应用程序。首先,我们导入了需要的库和模块:sys、QApplication、QMainWindow、QLabel、QLineEdit、QPushButton和QTimer。

然后,我们定义了一个名为MainWindow的类,它继承自QMainWindow。在类的初始化函数init()中,我们设置了窗口的标题、尺寸和背景颜色,并创建了微信号、发送内容和延迟发送的输入框,以及倒计时标签和发送按钮。

接下来,我们定义了一些辅助函数。FindWindow函数用于查找微信窗口,如果找到了窗口,就将其显示出来,并将其设置为前台窗口。ClipboardText函数用于设置剪贴板的文本内容。SendMsg函数用于模拟按下快捷键发送消息。SendWxMsg函数用于发送微信消息,它会根据输入的微信号和发送内容,依次发送消息给每个微信号。

在计时器的槽函数countdown_tick中,我们获取倒计时标签的文本,并判断剩余时间是否为零。如果剩余时间为零,则停止计时器,并执行发送微信消息的函数SendWxMsg。否则,将剩余时间减1,并更新倒计时标签的文本。

在start_countdown函数中,我们获取延迟发送的时间,并将其设置为倒计时标签的文本。然后,启动计时器,并设置计时器的间隔为1秒。

在repeat_send函数中,我们先执行一次发送微信消息的操作,然后使用QTimer.singleShot函数创建一个定时任务,该任务在延迟发送的时间后再次执行重复发送的操作。

在主程序的入口代码中,我们创建了一个QApplication对象,实例化MainWindow类并显示窗口。最后,通过调用app.exec_()运行应用程序的事件循环,使程序保持运行状态。

 

运行效果:

image

打包下载

后记

非常重要的一点是,我们要明确使用计算机和编程技术的目的是为了学习和测试,而不是进行非法攻击或者违法行为。编写和使用代码时,我们必须遵守法律法规,并且获得相关授权。如果您有合法的目的和授权,那么可以继续进行测试和使用。但是,如果您违反了法律法规或者未经授权使用,后果将由您自己承担。请务必谨慎行事,遵守法律规定,以确保计算机和网络的安全。

小黑板

非法攻击计算机系统是一种违法行为,违反了计算机安全法规。根据中华人民共和国刑法,非法攻击计算机系统可能构成非法侵入计算机信息系统罪、非法获取计算机信息系统数据、非法控制计算机信息系统罪、提供侵入、非法控制计算机信息系统程序、工具罪等罪名。根据《中华人民共和国刑法》规定,违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 共2条

请登录后发表评论