经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
使用 Python 实现微信消息的一键已读的思路代码
来源:jb51  时间:2021/6/7 13:22:00  对本文有异议

关键词
微信消息一键已读 微信消息批量已读 微信消息全部已读
1、微信消息怎么批量已读
2、微信消息可以一键已读吗
3、微信如何设置全部已读

目前支持 windows 微信
下载后双击运行即可

点击下载微信消息一键已读工具

1、实现思路

Step 1 > 获取微信的句柄
Step 2 > 激活微信窗口
Step 3 > 移动聊天窗口到最前
Step 4 > 模拟快捷键阅读消息
Step 5 >

2、安装依赖

所需依赖

  1. import win32gui
  2. import win32con
  3. import win32api
  4. import pyautogui
  5. from time import sleep
  6. from tkinter import *

3.编写代码


支持代码

  1. """
  2. 微信消息一键已读
  3. """
  4.  
  5. import win32gui
  6. import win32con
  7. import win32api
  8. import pyautogui
  9. from time import sleep
  10.  
  11. '''
  12. hwnd = win32gui.FindWindow(lpClassName=None, lpWindowName=None) # 查找窗口,不找子窗口,返回值为0表示未找到窗口
  13. hwnd = win32gui.FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None) # 查找子窗口,返回值为0表示未找到子窗口
  14.  
  15. win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
  16. SW_HIDE:隐藏窗口并激活其他窗口。nCmdShow=0。
  17. SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。nCmdShow=1。
  18. SW_SHOWMINIMIZED:激活窗口并将其最小化。nCmdShow=2。
  19. SW_SHOWMAXIMIZED:激活窗口并将其最大化。nCmdShow=3。
  20. SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=4。
  21. SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。nCmdShow=5。
  22. SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。nCmdShow=6。
  23. SW_SHOWMINNOACTIVE:窗口最小化,激活窗口仍然维持激活状态。nCmdShow=7。
  24. SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=8。
  25. SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。nCmdShow=9。
  26. '''
  27.  
  28.  
  29. def max_min_windows(hwnd):
  30. """
  31. 如果已经最大化,就最小化,否则反之
  32. :param hwnd: 窗口句柄
  33. """
  34. if win32gui.IsIconic(hwnd):
  35. win32gui.ShowWindow(hwnd, win32con.SW_SHOWMAXIMIZED)
  36. else:
  37. win32gui.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)
  38.  
  39.  
  40. def up():
  41. pyautogui.press('up')
  42. sleep(0.01)
  43.  
  44.  
  45. def down():
  46. pyautogui.press('down')
  47. sleep(0.01)
  48.  
  49.  
  50. def read_msg(hwnd):
  51. # 获取窗口的坐标
  52. left, top, right, bottom = win32gui.GetWindowRect(hwnd)
  53. pyautogui.moveTo(left + 170, top + 100)
  54. pyautogui.click(left + 170, top + 100, button='left')
  55. # 滚轮滚动到最顶端
  56. [pyautogui.scroll(1000) for i in range(15)]
  57. pyautogui.click(left + 170, top + 100, button='left')
  58. # 模拟读消息按键
  59. [up() for i in range(5)]
  60. [down() for i in range(20)]
  61. # 回到最顶端
  62. [pyautogui.scroll(1000) for i in range(15)]
  63. # 回到顶端聊天窗口
  64. pyautogui.click(left + 170, top + 100, button='left')
  65.  
  66.  
  67. # 显示到正常状态
  68. def active_window(hwnd):
  69. win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)
  70. win32gui.SetActiveWindow(hwnd)
  71. win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)

应用程序代码

  1. from windows_api.wechat import wechat_one_key_read
  2. from tkinter import *
  3. import win32gui
  4. from time import sleep
  5.  
  6. root = Tk()
  7. # 标题
  8. root.title('wx')
  9. # 窗口大小
  10. root.geometry('200x50+300+300')
  11.  
  12.  
  13. def read():
  14. hwnd = win32gui.FindWindow('WeChatMainWndForPC', "微信")
  15. if hwnd == 0:
  16. [print('微信未启动,请启动微信再试') for i in range(5)]
  17. return
  18. print('请勿移动鼠标或者操作键盘')
  19. sleep(1)
  20. print('开始激活微信窗口')
  21. wechat_one_key_read.active_window(hwnd)
  22. print('微信窗口已经激活,请勿移动鼠标或者操作键盘')
  23. print('开始阅读消息')
  24. wechat_one_key_read.read_msg(hwnd)
  25. print('消息阅读完成')
  26.  
  27.  
  28. t = Entry(root)
  29. b = Button(root, text='一键已读', command=read)
  30. b.pack()
  31.  
  32. root.mainloop()
  33.  
  34. if __name__ == '__main__':
  35. pass

相关参考 如何把代码打包成 exe 可执行程序

4、运行效果


已读完成

以上就是使用 Python 实现微信消息的一键已读的详细内容,更多关于Python 微信一键已读的资料请关注w3xue其它相关文章!
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号