mirror of
https://github.com/ttttupup/wxhelper.git
synced 2024-11-24 11:19:24 +08:00
feat:补充好友标签,增加打开url
This commit is contained in:
parent
28db38b45e
commit
2eb798458c
@ -43,7 +43,7 @@ void GlobalManager::initialize(HMODULE module) {
|
|||||||
http_server->AddHttpApiUrl("/api/getLoginUrl", GetLoginUrl);
|
http_server->AddHttpApiUrl("/api/getLoginUrl", GetLoginUrl);
|
||||||
http_server->AddHttpApiUrl("/api/translateVoice", TranslateVoice);
|
http_server->AddHttpApiUrl("/api/translateVoice", TranslateVoice);
|
||||||
http_server->AddHttpApiUrl("/api/getTranslateVoiceText", GetTranslateVoiceText);
|
http_server->AddHttpApiUrl("/api/getTranslateVoiceText", GetTranslateVoiceText);
|
||||||
|
http_server->AddHttpApiUrl("/api/openUrlByWeChat", OpenUrlByWeChat);
|
||||||
|
|
||||||
http_server->Start();
|
http_server->Start();
|
||||||
base::ThreadPool::GetInstance().Create(2, 8);
|
base::ThreadPool::GetInstance().Create(2, 8);
|
||||||
|
@ -103,6 +103,10 @@ std::string GetContacts(mg_http_message* hm) {
|
|||||||
{"pinyinAll", vec[i].pinyin_all},
|
{"pinyinAll", vec[i].pinyin_all},
|
||||||
{"reserved1", vec[i].reserved1},
|
{"reserved1", vec[i].reserved1},
|
||||||
{"reserved2", vec[i].reserved2},
|
{"reserved2", vec[i].reserved2},
|
||||||
|
{"remark",vec[i].remark},
|
||||||
|
{"remarkPinyin",vec[i].remark_pinyin},
|
||||||
|
{"remarkPinyinAll",vec[i].remark_pinyin_all},
|
||||||
|
{"labelIds",vec[i].label_ids},
|
||||||
};
|
};
|
||||||
ret_data["data"].push_back(item);
|
ret_data["data"].push_back(item);
|
||||||
}
|
}
|
||||||
@ -321,4 +325,16 @@ std::string GetTranslateVoiceText(struct mg_http_message* hm) {
|
|||||||
{"code", 1}, {"msg", "success"}, {"data", {{"transtext", content}}}};
|
{"code", 1}, {"msg", "success"}, {"data", {{"transtext", content}}}};
|
||||||
return ret_data.dump();
|
return ret_data.dump();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string OpenUrlByWeChat(struct mg_http_message* hm){
|
||||||
|
nlohmann::json j_param = nlohmann::json::parse(
|
||||||
|
hm->body.ptr, hm->body.ptr + hm->body.len, nullptr, false);
|
||||||
|
std::wstring url = GetWStringParam(j_param, "url");
|
||||||
|
int flag = GetIntParam(j_param, "flag");
|
||||||
|
INT64 success =
|
||||||
|
wxhelper::WechatService::GetInstance().OpenUrlByWeChatBrowser(url,flag);
|
||||||
|
nlohmann::json ret_data = {
|
||||||
|
{"code", success}, {"msg", "success"}, {"data", {}}};
|
||||||
|
return ret_data.dump();
|
||||||
|
}
|
||||||
} // namespace wxhelper
|
} // namespace wxhelper
|
@ -23,6 +23,7 @@ std::string SendMultiAtText(struct mg_http_message* hm);
|
|||||||
std::string GetLoginUrl(struct mg_http_message* hm);
|
std::string GetLoginUrl(struct mg_http_message* hm);
|
||||||
std::string TranslateVoice(struct mg_http_message* hm);
|
std::string TranslateVoice(struct mg_http_message* hm);
|
||||||
std::string GetTranslateVoiceText(struct mg_http_message* hm);
|
std::string GetTranslateVoiceText(struct mg_http_message* hm);
|
||||||
|
std::string OpenUrlByWeChat(struct mg_http_message* hm);
|
||||||
} // namespace wxhelper
|
} // namespace wxhelper
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -142,6 +142,10 @@ struct ContactInner {
|
|||||||
std::string nickname;
|
std::string nickname;
|
||||||
std::string pinyin;
|
std::string pinyin;
|
||||||
std::string pinyin_all;
|
std::string pinyin_all;
|
||||||
|
std::string remark;
|
||||||
|
std::string remark_pinyin;
|
||||||
|
std::string remark_pinyin_all;
|
||||||
|
std::string label_ids;
|
||||||
DWORD type;
|
DWORD type;
|
||||||
DWORD verify_flag;
|
DWORD verify_flag;
|
||||||
DWORD reserved1;
|
DWORD reserved1;
|
||||||
@ -153,6 +157,10 @@ struct ContactInner {
|
|||||||
nickname = "";
|
nickname = "";
|
||||||
pinyin = "";
|
pinyin = "";
|
||||||
pinyin_all = "";
|
pinyin_all = "";
|
||||||
|
remark = "";
|
||||||
|
remark_pinyin = "";
|
||||||
|
remark_pinyin_all = "";
|
||||||
|
label_ids = "";
|
||||||
type = -1;
|
type = -1;
|
||||||
verify_flag = -1;
|
verify_flag = -1;
|
||||||
reserved1 = -1;
|
reserved1 = -1;
|
||||||
@ -296,6 +304,11 @@ typedef UINT64 (*__UpdateMsg)(UINT64,UINT64,UINT64);
|
|||||||
typedef UINT64 (*__GetVoiceMgr)();
|
typedef UINT64 (*__GetVoiceMgr)();
|
||||||
typedef UINT64 (*__ChatMsg2NetSceneSendMsg)(UINT64,UINT64);
|
typedef UINT64 (*__ChatMsg2NetSceneSendMsg)(UINT64,UINT64);
|
||||||
typedef UINT64 (*__TranslateVoice)(UINT64,UINT64,UINT64);
|
typedef UINT64 (*__TranslateVoice)(UINT64,UINT64,UINT64);
|
||||||
|
typedef UINT64 (*__ShowWebView)(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64);
|
||||||
|
typedef UINT64 (*__NewWebViewPageConfig)(UINT64);
|
||||||
|
typedef UINT64 (*__FreeWebViewPageConfig)(UINT64);
|
||||||
|
typedef UINT64 (*__GetWebViewMgr)();
|
||||||
|
typedef UINT64 (*__SetUrl)(UINT64,UINT64,UINT64);
|
||||||
|
|
||||||
} // namespace function
|
} // namespace function
|
||||||
namespace prototype {
|
namespace prototype {
|
||||||
@ -466,6 +479,11 @@ const UINT64 kUpdateMsg = 0xf15c40;
|
|||||||
const UINT64 kGetVoiceMgr = 0xbf78f0;
|
const UINT64 kGetVoiceMgr = 0xbf78f0;
|
||||||
const UINT64 kChatMsg2NetSceneSendMsg = 0x96e8d0;
|
const UINT64 kChatMsg2NetSceneSendMsg = 0x96e8d0;
|
||||||
const UINT64 kTranslateVoice = 0x11217e0;
|
const UINT64 kTranslateVoice = 0x11217e0;
|
||||||
|
const UINT64 kNewWebViewPageConfig = 0x9512f0;
|
||||||
|
const UINT64 kFreeWebViewPageConfig = 0x951520;
|
||||||
|
const UINT64 kGetWebViewMgr = 0x9412d0;
|
||||||
|
const UINT64 kShowWebView = 0x1d236b0;
|
||||||
|
const UINT64 kSetUrl = 0x13dd410;
|
||||||
|
|
||||||
} // namespace offset
|
} // namespace offset
|
||||||
} // namespace V3_9_8_15
|
} // namespace V3_9_8_15
|
||||||
|
@ -358,6 +358,10 @@ INT64 WechatService::GetContacts(std::vector<common::ContactInner>& vec) {
|
|||||||
temp.wxid = wxutils::ReadWstringThenConvert(start + 0x10);
|
temp.wxid = wxutils::ReadWstringThenConvert(start + 0x10);
|
||||||
temp.custom_account = wxutils::ReadWstringThenConvert(start + 0x30);
|
temp.custom_account = wxutils::ReadWstringThenConvert(start + 0x30);
|
||||||
temp.encrypt_name = wxutils::ReadWstringThenConvert(start + 0x50);
|
temp.encrypt_name = wxutils::ReadWstringThenConvert(start + 0x50);
|
||||||
|
temp.remark = wxutils::ReadWstringThenConvert(start + 0x80);
|
||||||
|
temp.remark_pinyin = wxutils::ReadWstringThenConvert(start + 0x148);
|
||||||
|
temp.remark_pinyin_all = wxutils::ReadWstringThenConvert(start + 0x168);
|
||||||
|
temp.label_ids = wxutils::ReadWstringThenConvert(start + 0xc0);
|
||||||
temp.nickname = wxutils::ReadWstringThenConvert(start + 0xA0);
|
temp.nickname = wxutils::ReadWstringThenConvert(start + 0xA0);
|
||||||
temp.pinyin = wxutils::ReadWstringThenConvert(start + 0x108);
|
temp.pinyin = wxutils::ReadWstringThenConvert(start + 0x108);
|
||||||
temp.pinyin_all = wxutils::ReadWstringThenConvert(start + 0x128);
|
temp.pinyin_all = wxutils::ReadWstringThenConvert(start + 0x128);
|
||||||
@ -748,4 +752,35 @@ std::string WechatService::GetTranslateVoiceText(UINT64 msg_id) {
|
|||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
INT64 WechatService::OpenUrlByWeChatBrowser(const std::wstring &url, int flag) {
|
||||||
|
INT64 success = -1;
|
||||||
|
UINT64 config_addr = base_addr_ + offset::kNewWebViewPageConfig;
|
||||||
|
func::__NewWebViewPageConfig config =(func::__NewWebViewPageConfig)config_addr;
|
||||||
|
|
||||||
|
UINT64 free_config_addr = base_addr_ + offset::kFreeWebViewPageConfig;
|
||||||
|
func::__FreeWebViewPageConfig free_config =(func::__FreeWebViewPageConfig)free_config_addr;
|
||||||
|
|
||||||
|
UINT64 web_view_mgr_addr = base_addr_ + offset::kGetWebViewMgr;
|
||||||
|
func::__GetWebViewMgr web_view_mgr = (func::__GetWebViewMgr)web_view_mgr_addr;
|
||||||
|
|
||||||
|
UINT64 show_addr = base_addr_ + offset::kShowWebView;
|
||||||
|
func::__ShowWebView show_web_view = (func::__ShowWebView)show_addr;
|
||||||
|
|
||||||
|
UINT64 set_url_addr = base_addr_ + offset::kSetUrl;
|
||||||
|
func::__SetUrl set_url = (func::__SetUrl)set_url_addr;
|
||||||
|
|
||||||
|
int a = flag >> 4;
|
||||||
|
int b = flag & 0x1;
|
||||||
|
int c = flag & 0x2;
|
||||||
|
int d = flag & 0x4;
|
||||||
|
int e = flag & 0x8;
|
||||||
|
char* web_config= (char*)HeapAlloc(GetProcessHeap(),0,0xA20);
|
||||||
|
|
||||||
|
UINT64 ptr = config(reinterpret_cast<UINT64>(web_config));
|
||||||
|
set_url( ptr + 0x868,reinterpret_cast<UINT64>(url.c_str()),url.size());
|
||||||
|
web_view_mgr();
|
||||||
|
success = show_web_view(ptr,a,b,c,d,e);
|
||||||
|
free_config(ptr);
|
||||||
|
return success;
|
||||||
|
}
|
||||||
} // namespace wxhelper
|
} // namespace wxhelper
|
@ -81,6 +81,7 @@ class WechatService : public base::Singleton<WechatService> {
|
|||||||
void SetJsApiAddr(UINT64 addr);
|
void SetJsApiAddr(UINT64 addr);
|
||||||
INT64 TranslateVoice(UINT64 msg_id);
|
INT64 TranslateVoice(UINT64 msg_id);
|
||||||
std::string GetTranslateVoiceText(UINT64 msg_id);
|
std::string GetTranslateVoiceText(UINT64 msg_id);
|
||||||
|
INT64 OpenUrlByWeChatBrowser(const std::wstring& url, int flag);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UINT64 base_addr_;
|
UINT64 base_addr_;
|
||||||
|
@ -288,6 +288,10 @@ enableHttp=0时,使用ip,port的tcp服务回传消息。
|
|||||||
|  nickname|string|昵称|
|
|  nickname|string|昵称|
|
||||||
|  pinyin|string|简拼|
|
|  pinyin|string|简拼|
|
||||||
|  pinyinAll|string|全拼|
|
|  pinyinAll|string|全拼|
|
||||||
|
|  remark|string|备注|
|
||||||
|
|  remark_pinyin|string|备注拼音|
|
||||||
|
|  remark_pinyin_all|string|备注全拼|
|
||||||
|
|  label_ids|string|标签id|
|
||||||
|  reserved1|number|未知|
|
|  reserved1|number|未知|
|
||||||
|  reserved2|number|未知|
|
|  reserved2|number|未知|
|
||||||
|  type|number|未知|
|
|  type|number|未知|
|
||||||
@ -312,6 +316,10 @@ enableHttp=0时,使用ip,port的tcp服务回传消息。
|
|||||||
"nickname": "文件传输助手",
|
"nickname": "文件传输助手",
|
||||||
"pinyin": "WJCSZS",
|
"pinyin": "WJCSZS",
|
||||||
"pinyinAll": "wenjianchuanshuzhushou",
|
"pinyinAll": "wenjianchuanshuzhushou",
|
||||||
|
"remark":"",
|
||||||
|
"remark_pinyin":"",
|
||||||
|
"remark_pinyin_all":"",
|
||||||
|
"label_ids":"",
|
||||||
"reserved1": 1,
|
"reserved1": 1,
|
||||||
"reserved2": 1,
|
"reserved2": 1,
|
||||||
"type": 3,
|
"type": 3,
|
||||||
@ -949,3 +957,48 @@ enableHttp=0时,使用ip,port的tcp服务回传消息。
|
|||||||
"msg": "success"
|
"msg": "success"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 19.通过浏览器打开url**
|
||||||
|
###### 接口功能
|
||||||
|
> 微信内置浏览器打开url,或者本地浏览器打开url
|
||||||
|
|
||||||
|
###### 接口地址
|
||||||
|
> [/api/openUrlByWeChat](/api/openUrlByWeChat)
|
||||||
|
|
||||||
|
###### HTTP请求方式
|
||||||
|
> POST JSON
|
||||||
|
|
||||||
|
###### 请求参数
|
||||||
|
|参数|必选|类型|说明|
|
||||||
|
|---|---|---|---|
|
||||||
|
|url|string|需要打开的链接|
|
||||||
|
|flag|number|内置或者本地浏览器mask ,后四位按位取值,具体参数意义自行尝试,简单可直接传0,1,2|
|
||||||
|
|
||||||
|
|
||||||
|
###### 返回字段
|
||||||
|
|返回字段|字段类型|说明 |
|
||||||
|
|---|---|---|
|
||||||
|
|code|int|返回状态,大于0成功, -1失败|
|
||||||
|
|msg|string|成功提示|
|
||||||
|
|data|object|返回内容|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###### 接口示例
|
||||||
|
|
||||||
|
入参:
|
||||||
|
``` javascript
|
||||||
|
{
|
||||||
|
"url":"http://mp.weixin.qq.com/s?__biz=MzUzMTA",
|
||||||
|
"flag":2
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
响应:
|
||||||
|
``` javascript
|
||||||
|
{
|
||||||
|
"code": 1,
|
||||||
|
"data": null,
|
||||||
|
"msg": "success"
|
||||||
|
}
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user