前言
学校要求每天定时上报宿舍情况,由于比较懒,不想自己定时上报,所以尝试用python写了这个代码。
一、使用方法
Windows创建每日计划任务,每天定时运行该脚本
二、代码
1.需要自己下载一些库文件
一般在cmd中 pip install *** 就可以了,好像只有win32gui需要pip install pywin32
import win32gui
import pyautogui
import pyperclip
from win10toast import ToastNotifier
import time
import os
2.代码
代码如下(示例):
import win32gui
import pyautogui
import pyperclip
from win10toast import ToastNotifier
import time
import os
def uphelp():
handleqqmain = win32gui.FindWindow(None, 'QQ')
left, top, right, bottom = win32gui.GetWindowRect(handleqqmain)
if left-right == 494 & top-bottom == 470: # 通过检测qq窗体大小判断获得的句柄是否是登录窗体,我的qq登录窗体大小为这样,我猜大家都一样
print("QQ自动登录失败!")
else:
win32gui.SetForegroundWindow(handleqqmain) # 将qq窗体放在最前面
pyautogui.moveTo(left + 100, top + 166,
duration=1) # 用1s移动鼠标到qq搜索框
pyautogui.leftClick()
pyperclip.copy("****群聊") # 将你要发送的群或者人的名字的文本读取到剪切板
pyautogui.hotkey('ctrl', 'v') # 从剪切板复制到搜索框
time.sleep(3)
pyautogui.hotkey('enter') # pyautogui.press('enter') 回车进入目标窗体
time.sleep(3)
pyperclip.copy('到')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter') # 回车发送
time.sleep(3)
# 检测网络连通性
def netCheck():
exit_code = os.system('ping www.baidu.com')
if exit_code:
print('设备没有连接网络')
else:
print('网络连通')
return exit_code
#退出qq
def quit_qq():
handleqqmain = win32gui.FindWindow(None, 'QQ')
left, top, right, bottom = win32gui.GetWindowRect(handleqqmain)
pyautogui.moveTo(right-20, top+20) # 立刻将鼠标移动到关闭按钮
time.sleep(1)
pyautogui.leftClick()
print("上报结束")
if __name__ == "__main__":
a = netCheck()
if a == 0: # 网络联通
handleqqmain = win32gui.FindWindow(None, 'QQ') #如果要抓的窗体不存在返回句柄为0,无效
if handleqqmain == 0:
print("当前QQ不在线")
# 打开qq
os.startfile(
"D:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe")
time.sleep(15) # 等待qq自动登录
uphelp() # 上报
if handleqqmain == 0: # 如果qq原本为关闭状态则关闭qq
quit_qq()
#使用win10的通知栏通知上报结束
toaster = ToastNotifier()
toaster.show_toast(title="答到程序", msg="今日答到程序已执行!",
icon_path=None, duration=10)
总结
提示:谨慎使用,小心翻车