Pywinauto自动化操作PC微信提取好友微信号
声明: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月-------------------------------------
根据以上思路,已实现自动发送微信消息,但是不方便公开,大家可以尝试一下,想想思路。
Pywinauto自动化操作PC微信提取好友微信号的更多相关文章
- 触摸精灵lua脚本实现微信群加好友功能
--此脚本针对iPhone5/5s --目前只实现一个屏幕微信群好友的添加,如果想添加更多好友, --需要划屏操作,执行划屏操作时建议循环滑动 function main() --获取屏幕的分辨率 w ...
- 利用Python查看微信共同好友
思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...
- 我已经看到了,撤回也没用了(PC微信防撤回补丁)
前两天看 GitHub 发现一个有趣的项目,PC微信防撤回补丁,本着研究学习的目的,在看过源码,一顿疯狂操作之后,了解了其原理是基于修改 wechatwin.dll 达到防撤回的. 于是乎,自己动手玩 ...
- 用chrome console实现自动化操作网页
因为chrome console只能访问当前页的上下文(以及chrome扩展的上下文),无法访问其他标签页面的上下文,所以局限性较大,仅适用于一些较简单的操作 经实践,可以在chrome的一个标签页的 ...
- 静态集成腾讯TBS X5内核WebView,从微信提取新版30M浏览器内核打包进apk
目录 前情提要 第一步:下载老版本SDK得到jar 获取SDK 集成SDK 步骤二.下载提取最新TBS X5内核 方法1:从微信中提取 方法2:App内内访问tbs调试页安装新内核 步骤三.集成内核到 ...
- 【python】itchat登录微信获取好友签名并生成词云
在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺 ...
- ASP调用SDK微信分享好友、朋友圈
ASP调用SDK微信分享好友.朋友圈需要用到sha1.asp,我先来上主代码,然后再附加sha1.asp,方便大家直接复制过去即可使用. 页面:shara.asp 1 <%@LANGUAGE=& ...
- 快过年了,如何使用 AutoJS 自动化快速抢微信红包!
快过年了,群里一般会充斥着各种红包,你抢红包的手速怎么样呢?AutoJS 是一款 Android 端的应用软件,它可以基于无障碍服务主动或基于任务,完成一系列自动化操作 官网:https://pro. ...
- splinter python浏览器自动化操作,模拟浏览器的行为
Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...
随机推荐
- 《DSP using MATLAB》Problem 8.37
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- MyBatis的核心API
MyBatis核心Api 上次简单的写了一个MyBatis的简介以及编写了一个MyBatis的入门程序,但是在入门程序中出现多很多比较陌生的词,比如SqlSessionFactoryBuilder.S ...
- 初识OpenCV-Python - 010: 精致边缘探测
本节主要介绍使用Canny函数达到边缘探测的结果. Code: import cv2from matplotlib import pyplot as plt img = cv2.imread('bal ...
- java_缓冲流(字符输出流)
/** 字符缓冲流: * java.io.BufferedWriter extends writer * BufferedWriter:字符缓冲输出流: * * 构造方法: * BufferedWri ...
- JS规则 我与你同在(逻辑与操作符)数学中的“b大于a,b小于c”是“a<b<c”,那么在JavaScript中可以用&&表示
我与你同在(逻辑与操作符) 数学里面的"a>b",在JavaScript中还表示为a>b:数学中的"b大于a,b小于c"是"a<b& ...
- golang 获取当前可执行程序的当前路径
import ( "errors" // "fmt" "os" "os/exec" "path/filepat ...
- Android开发 输入法调用学习
方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(Context. ...
- 使用Cookie实现用户商品历史浏览记录
该功能分为四个模块: 1. 获取所有商品并以链接的形式显示 out.write("网站商品: <br/>"); Map<String, Book> book ...
- 二分+2-sat——hdu3062
hdu3622升级版 注意要保留两位小数 /* 给定n对圆心(x,y),要求从每对里找到一个点画圆,不可相交 使得最小半径最大 二分答案,设最小半径为r 然后两两配对一次进行判断,在2-sat上连边即 ...
- WCF进阶:扩展bindingElementExtensions支持对称加密传输
前面两篇文章WCF进阶:将编码后的字节流压缩传输和WCF 进阶: 对称加密传输都是实现了自定义编码,那两个例子中托管服务或者客户端调用都采用的代码实现,WCF更友好的方式是在app.config或 ...