自动祝福
有个同学找我帮忙:明天是她朋友的生日,但她没时间发送祝福,问我能不能弄个自动发送。我想,QQ并没有内置的定时发送功能,紧接着又想起了QQ刷屏助手(见我以前的博文)便用Python实现了她提出的需求。
代码
import tkinter as tk
import tkinter.messagebox as messagebox
import datetime
import time
import win32gui
import win32con
import win32clipboard as w
#主要
def main(name,word,time_h,time_m):
startTime = datetime.datetime(datetime.datetime.now().year,datetime.datetime.now().month,datetime.datetime.now().day,time_h,time_m,0)
print('Program not starting yet...')
wt=0
while datetime.datetime.now() < startTime:
time.sleep(1)
print('time count %s'%wt)
wt=wt+1
print('程序在停止'+str(wt)+'秒后于'+str(startTime)+'开始运行')
print('Executing...')
print('任务执行')
#设置剪贴板文本
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, word)
w.CloseClipboard()
# 获取qq窗口句柄
qq=win32gui.FindWindow(None,name)
# 投递剪贴板消息到QQ窗体
win32gui.SendMessage(qq, 258, 22, 2080193)
win32gui.SendMessage(qq, 770, 0, 0)
# 模拟按下回车键
win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.SendMessage(qq, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
messagebox.showinfo('提醒','任务执行完成!')
def start():
messagebox.showwarning('注意','''
·开始运行后请勿关闭程序,否则任务会结束!
·请确认发送快捷键为Enter
''')
main(name_enterbox.get(),word_enterbox.get(),int(time_enterbox_h.get()),int(time_enterbox_m.get()))
#窗口
window=tk.Tk()
window.geometry('380x450')
window.title('自动祝福')
#名称输入
enter_name_tip=tk.Label(window,text='请输入目标用户的昵称(如有备注,则仅输入备注)')
enter_name_tip.place(x=10,y=10)
name_enterbox=tk.Entry(window,bd=2,show=None,width=50)
name_enterbox.place(x=10,y=35)
#内容输入
enter_word_tip=tk.Label(window,text='请输入要发送的内容')
enter_word_tip.place(x=10,y=70)
word_enterbox=tk.Entry(window,bd=2,show=None,width=50)
word_enterbox.place(x=10,y=95)
#时间输入
enter_time_tip=tk.Label(window,text='请输入时间(24小时制)')
enter_time_tip.place(x=10,y=130)
#小时
time_enterbox_h=tk.Entry(window,bd=2,show=None,width=10)
time_enterbox_h.place(x=10,y=150)
enter_time_tip_h=tk.Label(window,text='小时')
enter_time_tip_h.place(x=90,y=150)
#小时
time_enterbox_m=tk.Entry(window,bd=2,show=None,width=10)
time_enterbox_m.place(x=150,y=150)
enter_time_tip_m=tk.Label(window,text='分钟')
enter_time_tip_m.place(x=230,y=150)
#开始按钮
start_btn=tk.Button(window,text='开始',bd=3,width=49,height=2,command=start)
start_btn.place(x=10,y=200)
#主循环
window.mainloop()
#定时程序来自CSDN博主weixin_33935505,原文链接:https://blog.csdn.net/weixin_33935505/article/details/93803069
#发送程序来自“QQ刷屏助手”
注意
-
定时程序来自CSDN博主weixin_33935505,原文链接。
-
窗口查找功能似乎有些不稳定,最好手动定位。
目前缺陷
- 运行时不能用电脑做其他事情