Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
EEEEhex committed Nov 10, 2023
1 parent 3095a37 commit 1da5c86
Showing 1 changed file with 17 additions and 15 deletions.
32 changes: 17 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,18 @@
├─3rdparty
├─examples
├─proto
├─src
│ ├─include
│ │ ├─mmmojo_source
│ │ ├─qq_mojoipc
│ │ └─xplugin_protobuf
│ ├─qq_mojoipc
│ └─wrapper
└─swig
└─src
\ \ ├─include
\ \ │ ├─mmmojo_source
\ \ │ ├─qq_mojoipc
\ \ │ └─xplugin_protobuf
\ \ ├─qq_mojoipc
\ \ └─wrapper

(此版本根据微信的mmmojo源码再次重构, 逻辑更清晰)
其中3rdparty是编译好的libprotobuf库, examples里是调用方法的示例, proto里是WeChat与组件之间的Protobuf通信协议的定义文件。
src文件夹里 include中mmmojo_source是微信MMMojo的源代码中的一些定义, qq_mojoipc是实现QQMojoIPC的头文件, xplugin_protobuf是使用protoc编译后的头文件。
qq_mojoipc文件夹是实现QQMojoIPC的实现文件, wrapper里是实现调用微信XPlugin组件的实现文件, 其中mmmojo_call.cpp是基础的调用XPlugin的方法, mmmojo_ocr.cpp和mmmojo_utility.cpp是封装了对应组件通信协议的文件。

~~swig文件夹里是swig的接口文件, 本来是想通过swig让其他语言也可以调用, 但是还没有写好, 不知道怎么在其他语言中将函数转为void\*传给c++~~

# 编译说明
本项目使用cmake, 以下为cmake选项说明:
Expand All @@ -45,15 +42,20 @@ qq_mojoipc文件夹是实现QQMojoIPC的实现文件, wrapper里是实现调用
| XPLUGIN_WRAPPER | 编译封装好WeChat通信协议的实现文件(mmmojo_ocr.cpp/mmmojo_utility.cpp以及pb协议文件) 默认为ON |
| BUILD_QQIPC | 编译QQMojoIPC的实现文件 默认为OFF |
| BUILD_CPPEXAMPLE | 编译调用方法示例项目 默认为OFF |
| BUILD_WITH_SWIG_PY | 使用SWIG编译为Python可用的.pyd 默认为OFF (还未实现)|
| EXAMPLE_USE_JSON | CPP示例项目的回调函数的数据使用Json格式而非protobuf 默认为ON |
| BUILD_PURE_C_MODE | 编译纯C接口方便其他语言调用 默认为OFF|

## 快速上手
> 在编译前请先解压3rdparty下的压缩文件(或者自己编译一下protobuf) 以及src/include/xplugin_protobuf下的压缩的头文件
使用如下命令行:
```
cmake -B build -G "Visual Studio 17 2022" -A x64 -DBUILD_CPPEXAMPLE=ON
```
```
如果需要使用其他语言调用, 需要加上(调用方法请查看examples文件夹)
```
-DBUILD_PURE_C_MODE
```
然后在build文件夹里编译生成visual studio项目即可

# WeChat MMMojo说明
Expand All @@ -77,13 +79,13 @@ typedef enum {
enum RequestIdUtility
{
UtilityHiPush = 10001, //是Utility启动发送的
UtilityInitPullReq = 10002, //初始化请求
UtilityInitPullReq = 10002, //初始化请求
UtilityInitPullResp = 10003, //回复创建的都是Shared类型的info, 但是调用了SwapMMMojoWriteInfoCallback, 所以回调的还是Pull
UtilityResampleImagePullReq = 10010,
UtilityResampleImagePullResp = 10011,
UtilityDecodeImagePullReq = 10020,
UtilityDecodeImagePullResp = 10021,
UtilityPicQRScanPullReq = 10030, //10030是点击OCR时(也是打开图片时)发送的请求, 参数是图片路径
UtilityPicQRScanPullReq = 10030, //10030是点击OCR时(也是打开图片时)发送的请求, 参数是图片路径
UtilityQRScanPullReq = 10031, //10031是截图框选时发送的请求, 参数应该是某种编码后的图片数据
UtilityQRScanPullResp = 10032, //这两种请求的返回ID都是10032
UtilityTextScanPushResp = 10040 //TextScan具体在扫什么不是很清楚 可能是用来判断图片上是否有文字
Expand All @@ -95,7 +97,7 @@ message QRScanReqMessage {
string origin_pic = 1; //原始图片路径 可选
string decode_pic = 2; //解码后的图片路径 可选
int32 unknown_0 = 3; //未知 可选 一般为0
bytes encode_pic_data = 4; //某种编码后的图片数据 可选
bytes encode_pic_data = 4; //某种编码后的图片数据 可选
int32 encode_pic_x = 5; //编码图片长 可选
int32 encode_pic_y = 6; //编码图片宽 可选
int32 unknown_1 = 7; //未知 一般为1
Expand Down

0 comments on commit 1da5c86

Please sign in to comment.