"""
微信消息一鍵已讀
"""
import win32gui
import win32con
import win32api
import pyautogui
from time import sleep
'''
hwnd = win32gui.FindWindow(lpClassName=None, lpWindowName=None) # 查找窗口,不找子窗口,返回值為0表示未找到窗口
hwnd = win32gui.FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None) # 查找子窗口,返回值為0表示未找到子窗口
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
SW_HIDE:隱藏窗口并激活其他窗口。nCmdShow=0。
SW_SHOWNORMAL:激活并顯示一個窗口。如果窗口被最小化或最大化,系統將其恢復到原來的尺寸和大小。應用程序在第一次顯示窗口的時候應該指定此標志。nCmdShow=1。
SW_SHOWMINIMIZED:激活窗口并將其最小化。nCmdShow=2。
SW_SHOWMAXIMIZED:激活窗口并將其最大化。nCmdShow=3。
SW_SHOWNOACTIVATE:以窗口最近一次的大小和狀態顯示窗口。激活窗口仍然維持激活狀態。nCmdShow=4。
SW_SHOW:在窗口原來的位置以原來的尺寸激活和顯示窗口。nCmdShow=5。
SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一個頂層窗口。nCmdShow=6。
SW_SHOWMINNOACTIVE:窗口最小化,激活窗口仍然維持激活狀態。nCmdShow=7。
SW_SHOWNA:以窗口原來的狀態顯示窗口。激活窗口仍然維持激活狀態。nCmdShow=8。
SW_RESTORE:激活并顯示窗口。如果窗口最小化或最大化,則系統將窗口恢復到原來的尺寸和位置。在恢復最小化窗口時,應用程序應該指定這個標志。nCmdShow=9。
'''
def max_min_windows(hwnd):
"""
如果已經最大化,就最小化,否則反之
:param hwnd: 窗口句柄
"""
if win32gui.IsIconic(hwnd):
win32gui.ShowWindow(hwnd, win32con.SW_SHOWMAXIMIZED)
else:
win32gui.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)
def up():
pyautogui.press('up')
sleep(0.01)
def down():
pyautogui.press('down')
sleep(0.01)
def read_msg(hwnd):
# 獲取窗口的坐標
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
pyautogui.moveTo(left + 170, top + 100)
pyautogui.click(left + 170, top + 100, button='left')
# 滾輪滾動到最頂端
[pyautogui.scroll(1000) for i in range(15)]
pyautogui.click(left + 170, top + 100, button='left')
# 模擬讀消息按鍵
[up() for i in range(5)]
[down() for i in range(20)]
# 回到最頂端
[pyautogui.scroll(1000) for i in range(15)]
# 回到頂端聊天窗口
pyautogui.click(left + 170, top + 100, button='left')
# 顯示到正常狀態
def active_window(hwnd):
win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)
win32gui.SetActiveWindow(hwnd)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
from windows_api.wechat import wechat_one_key_read
from tkinter import *
import win32gui
from time import sleep
root = Tk()
# 標題
root.title('wx')
# 窗口大小
root.geometry('200x50+300+300')
def read():
hwnd = win32gui.FindWindow('WeChatMainWndForPC', "微信")
if hwnd == 0:
[print('微信未啟動,請啟動微信再試') for i in range(5)]
return
print('請勿移動鼠標或者操作鍵盤')
sleep(1)
print('開始激活微信窗口')
wechat_one_key_read.active_window(hwnd)
print('微信窗口已經激活,請勿移動鼠標或者操作鍵盤')
print('開始閱讀消息')
wechat_one_key_read.read_msg(hwnd)
print('消息閱讀完成')
t = Entry(root)
b = Button(root, text='一鍵已讀', command=read)
b.pack()
root.mainloop()
if __name__ == '__main__':
pass