前言
主要功能是创建一个窗口应用程序,用于定时自动发送微信消息。提供了微信号、发送内容和延迟发送时间的输入框,以及倒计时标签和发送按钮。用户可以在微信号输入框中输入要发送消息的微信号,多个微信号之间用逗号分隔。在发送内容输入框中输入要发送的消息内容。延迟发送时间输入框用于设置发送消息的延迟时间,以秒为单位。当用户点击发送按钮时,定时器启动,开始倒计时。倒计时的时间由延迟发送时间确定,倒计时期间,倒计时标签会显示剩余时间。当倒计时结束时,自动触发发送微信消息的操作。发送微信消息的操作会查找微信窗口,设置剪贴板文本,模拟按键发送消息。此外,该应用程序还提供了一个重复发送按钮,点击该按钮后会重复执行发送微信消息的操作。在每次发送完成后,根据设定的延迟时间,会再次触发发送操作,实现定时自动发送微信消息的功能。
代码
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_()运行应用程序的事件循环,使程序保持运行状态。
运行效果:
打包下载
后记
非常重要的一点是,我们要明确使用计算机和编程技术的目的是为了学习和测试,而不是进行非法攻击或者违法行为。编写和使用代码时,我们必须遵守法律法规,并且获得相关授权。如果您有合法的目的和授权,那么可以继续进行测试和使用。但是,如果您违反了法律法规或者未经授权使用,后果将由您自己承担。请务必谨慎行事,遵守法律规定,以确保计算机和网络的安全。
小黑板
非法攻击计算机系统是一种违法行为,违反了计算机安全法规。根据中华人民共和国刑法,非法攻击计算机系统可能构成非法侵入计算机信息系统罪、非法获取计算机信息系统数据、非法控制计算机信息系统罪、提供侵入、非法控制计算机信息系统程序、工具罪等罪名。根据《中华人民共和国刑法》规定,违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚
2、本站永久网址:https://www.xheishou.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
- 最新
- 最热
只看作者