声明:https://zhuanlan.zhihu.com/p/29944988
#! /usr/bin/env python
#coding=utf-8
#pywinauto自动化操作微信号
#by bugscaner http://tools.bugscaner.com
import win32clipboard as wc
import win32con
from pywinauto.application import *
from PIL import ImageGrab
import time
def get_screenxy_from_bmp(main_bmp,son_bmp):
#获取屏幕上匹配指定截图的坐标->(x,y,width,height)
from PIL import Image
img_main=Image.open(main_bmp)
img_son=Image.open(son_bmp)
datas_a=list(img_main.getdata())
datas_b=list(img_son.getdata())
for i,item in enumerate(datas_a):
if datas_b[0]==item and datas_a[i+1]==datas_b[1]:
yx=divmod(i,img_main.size[0])
main_start_pos=yx[1]+yx[0]*img_main.size[0] match_test=True
for n in range(img_son.size[1]):
main_pos=main_start_pos+n*img_main.size[0]
son_pos=n*img_son.size[0] if datas_b[son_pos:son_pos+img_son.size[0]] != datas_a[main_pos:main_pos+img_son.size[0]]:
match_test=False
break
if match_test:
return (yx[1],yx[0],img_son.size[0],img_son.size[1])
return False
def getCopyText():
wc.OpenClipboard()
copy_text = wc.GetClipboardData(win32con.CF_TEXT)
wc.CloseClipboard()
return copy_text
oks = []
app = Application().start(r"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe")
if not app.windows():
app = Application().connect(path=r"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe")
app.window_(title=u"微信",class_name="WeChatMainWndForPC").move_window(0,0)
nb = 0
while 1:
if nb > 140:
break
else:
nb = nb + 1
app.window_(title=u"微信",class_name="WeChatMainWndForPC").TypeKeys("{DOWN}")
time.sleep(.5)
pic = ImageGrab.grab((0,0,623,454))
pic.save('1.bmp')
ok = get_screenxy_from_bmp(u'1.bmp',u'weixin.bmp')
#选中
app.window_(title=u"微信",class_name="WeChatMainWndForPC").double_click_input(coords=(ok[0]+100,ok[1]+10))
#拷贝
app.window_(title=u"微信",class_name="WeChatMainWndForPC").TypeKeys("^c")
app.window_(title=u"微信",class_name="WeChatMainWndForPC").click_input(coords=(208,477))
weixin = getCopyText()
if weixin not in oks:
print weixin
oks.append(weixin)
f = open("weixin.txt","a")
f.write(weixin+"\n")
f.close()
else:
print u"失败一个"

其中的weixin.bmp为截图的微信字体

---------------------------------------分割线2017年11月-------------------------------------

根据以上思路,已实现自动发送微信消息,但是不方便公开,大家可以尝试一下,想想思路。

最新文章

  1. JAVA-堆区,栈区,方法区。
  2. 第七课 第二节,T语言流程语句(版本5.0)
  3. mac配置iterm2和ohmyzsh
  4. iOS开发笔记系列-基础5(分类和协议)
  5. MongoDB在windows下安装配置
  6. java比较相等符
  7. getReadableDatabase 和 getWritableDatabase的区别
  8. oracle 表空间 表权限 用户
  9. SQL Server性能优化(8)堆表结构介绍
  10. Git错误merge怎么办?
  11. 重新复习~ 为了重新找工作 - > XMLHttpRequest2.0 Jsonp nodeType 节点 webpack基本搭建 闭包的一句话总结
  12. Bitmap那些事之内存占用计算和加载注意事项
  13. CS新建排版
  14. 剑指offer 二叉树中和为某一个值的路径
  15. solidity fallback函数
  16. 小朋友学C语言(2):安装Dev C++编译器
  17. activeMQ的高级特性:嵌入activemq
  18. Android调用 .Net Core WebApi 返回数据,用FastJSON解析一直报错。
  19. JMeterPlugins插件
  20. mix-blend-mode 混合模式 background-blend-mode 背景混合模式 isolation:isolate 隔离

热门文章

  1. POJ 1584 /// 判断圆(点)在多边形内 判断凸包
  2. SPOJ10707 COT2-Count on a tree II
  3. WPF 先显示登录成功,验证成功后显示主窗口
  4. leetcode-92-反转链表②
  5. 并发和多线程(九)--AbstractQueuedSynchronizer排他锁基本原理
  6. 自己整理的一个访问SQLite3数据库的C++类
  7. EF Code First数据库连接配置
  8. 为WCF增加UDP绑定(储备篇)
  9. Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析
  10. 博弈论 | 暑期集训Day2学习总结