From 1da5c861c604e172928f4cc17508dbb3b21370de Mon Sep 17 00:00:00 2001 From: EEEEhex <58393859+EEEEhex@users.noreply.github.com> Date: Fri, 10 Nov 2023 18:00:01 +0800 Subject: [PATCH] Update README.md --- README.md | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index eeb3563..abb6a99 100644 --- a/README.md +++ b/README.md @@ -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选项说明: @@ -45,7 +42,8 @@ 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下的压缩的头文件 @@ -53,7 +51,11 @@ qq_mojoipc文件夹是实现QQMojoIPC的实现文件, wrapper里是实现调用 使用如下命令行: ``` cmake -B build -G "Visual Studio 17 2022" -A x64 -DBUILD_CPPEXAMPLE=ON -``` +``` +如果需要使用其他语言调用, 需要加上(调用方法请查看examples文件夹) +``` +-DBUILD_PURE_C_MODE +``` 然后在build文件夹里编译生成visual studio项目即可 # WeChat MMMojo说明 @@ -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具体在扫什么不是很清楚 可能是用来判断图片上是否有文字 @@ -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