一、想法来源
作为程序员,对自己工具不满,就要去改造,对于微信已经厌恶极久了。总有人不合时宜的发语音,总有老板无时无刻的艾特,总有微商群发各种消息。重点是不能忍受语音。当现有客户端不能满足要求,心中无限郁闷,想着做一个客户端,去回怼那些发语音的人。
二、初期准备
最开始想从手机微信客户端动手,奈何抓包看的我头疼,后来想到用Fiddler(比较友好易用)去抓微信网页版,就开始了各种抓包之旅。
三、目录接口
因为是第一次写类似的类库,中间迭代重写了好几次,主要包含CommonTools.dll,HttpHelper.dll跟一个WeChatCore.dll,第一个工具包,提供简单工具类,例如一些扩展方法处理(不包含业务逻辑的),还有一些简单的日志记录之类的。第二个工具包就是简单的http请求,做了一个简单的封装。WeChatCore.dll是核心业务dll主要目录结构如下:
主要目录结构
首先Common文件夹下包含有
Common
包含此三个工具类,
CommonMethodCallBackHandlers.cs提供一些方法回调,比如收到信息,发送信息,登录,扫码等等一系列交互回调。
MethodsHelper.cs主要是一些产生微信协议随机字段跟字符串的帮助方法。
NotifyPropertyChanged.cs是一个属性变化通知方法,用来当某个字段属性变化时,执行某个动作,在下载头像中有用到。
此目录下三个类中重点关注下CommonMethodCallBackHandlers类,因为它直接决定了数据传输跟交互。
控件
这个是最早的一个头像下载控件,继承自Image,后来就没有用它
基础定义
Data文件夹本来是要放置一个登陆后的id的,但是后来工作忙了就没有实现。DefineClass是一系列的定义方法。CommonDefine.cs包含有一些基本的数据定义比如cookie缓存之类的,之所以放到这,我不想http部分承担太多业务层,ConfigDefine.cs配置日志,自动回复等本地存储的根路径。DirectoryDefine.cs主要是创建一些基础的目录,比如声音,图像,视频之类的。LogPathDefine.cs主要是一些日志存储路径。UrlDefine.cs包含了所有的请求Url的定义。
实体类
百分之九十九为微信交互协议生成的实体类,注意一个类MsgEntity.cs 为自定义外部交互信息类,所有你想要的信息操作都在这里。
枚举类
主要是一些基本数据的枚举,待补充。
引用和默认头像
主要是引用的一些外部dll跟党头像没有下载下来时候的默认图像。
主体业务类
内部结构
其中包含一系列的静态方法,直接调用即可。
初始化方法如下
调用方式
先注册一系列的回调函数,然后调用WeChat.InitInitWeChatRobot();此方法最好放到异步线程中调用,主线程会卡死界面。
第一次瞎写,你们还是看代码吧、、、
地址
https://gitee.com/tangmanger/WeChatCore
git
https://gitee.com/tangmanger/WeChatCore.git
https://gitee.com/tangmanger/EasyWeChatClient.git (简单例子)
最近有点忙已经很久没来的及更新这个了