feat(message): impl forward message
This commit is contained in:
parent
a53bdeedb1
commit
8ac85573b5
@ -51,7 +51,7 @@ Sender::Sender()
|
|||||||
func_free_mmreader = reinterpret_cast<Free_t>(g_WeChatWinDllAddr + OsSend::FREE_MM_READER);
|
func_free_mmreader = reinterpret_cast<Free_t>(g_WeChatWinDllAddr + OsSend::FREE_MM_READER);
|
||||||
func_send_rich_text = reinterpret_cast<SendRichText_t>(g_WeChatWinDllAddr + OsSend::RICH_TEXT);
|
func_send_rich_text = reinterpret_cast<SendRichText_t>(g_WeChatWinDllAddr + OsSend::RICH_TEXT);
|
||||||
func_send_pat = reinterpret_cast<SendPat_t>(g_WeChatWinDllAddr + OsSend::PAT);
|
func_send_pat = reinterpret_cast<SendPat_t>(g_WeChatWinDllAddr + OsSend::PAT);
|
||||||
func_forward = reinterpret_cast<Forward_t>(g_WeChatWinDllAddr + OS_FORWARD_MSG);
|
func_forward = reinterpret_cast<Forward_t>(g_WeChatWinDllAddr + OsSend::FORWARD);
|
||||||
func_get_emotion_mgr = reinterpret_cast<GetEmotionMgr_t>(g_WeChatWinDllAddr + OsSend::EMOTION_MGR);
|
func_get_emotion_mgr = reinterpret_cast<GetEmotionMgr_t>(g_WeChatWinDllAddr + OsSend::EMOTION_MGR);
|
||||||
func_send_emotion = reinterpret_cast<SendEmotion_t>(g_WeChatWinDllAddr + OsSend::EMOTION);
|
func_send_emotion = reinterpret_cast<SendEmotion_t>(g_WeChatWinDllAddr + OsSend::EMOTION);
|
||||||
func_send_xml = reinterpret_cast<SendXml_t>(g_WeChatWinDllAddr + OsSend::XML);
|
func_send_xml = reinterpret_cast<SendXml_t>(g_WeChatWinDllAddr + OsSend::XML);
|
||||||
@ -295,9 +295,10 @@ int Sender::forward(QWORD msgid, const std::string &receiver)
|
|||||||
LARGE_INTEGER l;
|
LARGE_INTEGER l;
|
||||||
l.HighPart = dbIdx;
|
l.HighPart = dbIdx;
|
||||||
l.LowPart = static_cast<DWORD>(localId);
|
l.LowPart = static_cast<DWORD>(localId);
|
||||||
auto wxReceiver = new_wx_string(receiver);
|
|
||||||
|
|
||||||
return static_cast<int>(func_forward(reinterpret_cast<QWORD>(wxReceiver.get()), l.QuadPart, 0x4, 0x0));
|
WxStringHolder<std::string> holderReceiver(receiver);
|
||||||
|
|
||||||
|
return static_cast<int>(func_forward(&holderReceiver.wx, l.QuadPart, 0x4, 0x0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// RPC 方法
|
// RPC 方法
|
||||||
|
@ -52,7 +52,7 @@ private:
|
|||||||
QWORD, QWORD);
|
QWORD, QWORD);
|
||||||
using SendRichText_t = QWORD (*)(QWORD, WxString *, char *);
|
using SendRichText_t = QWORD (*)(QWORD, WxString *, char *);
|
||||||
using SendPat_t = QWORD (*)(WxString *, WxString *);
|
using SendPat_t = QWORD (*)(WxString *, WxString *);
|
||||||
using Forward_t = QWORD (*)(QWORD, QWORD, QWORD, QWORD);
|
using Forward_t = QWORD (*)(WxString *, QWORD, QWORD, QWORD);
|
||||||
using GetEmotionMgr_t = QWORD (*)();
|
using GetEmotionMgr_t = QWORD (*)();
|
||||||
using SendEmotion_t = QWORD (*)(QWORD, WxString *, QWORD *, WxString *, QWORD, QWORD *, QWORD, QWORD *);
|
using SendEmotion_t = QWORD (*)(QWORD, WxString *, QWORD *, WxString *, QWORD, QWORD *, QWORD, QWORD *);
|
||||||
using XmlBufSign_t = QWORD (*)(QWORD, QWORD, QWORD);
|
using XmlBufSign_t = QWORD (*)(QWORD, QWORD, QWORD);
|
||||||
|
@ -255,7 +255,7 @@ const std::unordered_map<Functions, RpcServer::FunctionHandler> RpcServer::rpcFu
|
|||||||
{ Functions_FUNC_SEND_EMOTION, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_emotion(r.msg.file, out, len); } },
|
{ Functions_FUNC_SEND_EMOTION, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_emotion(r.msg.file, out, len); } },
|
||||||
{ Functions_FUNC_SEND_RICH_TXT, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_rich_text(r.msg.rt, out, len); } },
|
{ Functions_FUNC_SEND_RICH_TXT, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_rich_text(r.msg.rt, out, len); } },
|
||||||
{ Functions_FUNC_SEND_PAT_MSG, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_pat(r.msg.pm, out, len); } },
|
{ Functions_FUNC_SEND_PAT_MSG, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_pat(r.msg.pm, out, len); } },
|
||||||
// { Functions_FUNC_FORWARD_MSG, [](const Request &r, uint8_t *out, size_t *len) { return sender.rpc_forward(r.msg.fm, out, len); } },
|
{ Functions_FUNC_FORWARD_MSG, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_forward(r.msg.fm, out, len); } },
|
||||||
// { Functions_FUNC_EXEC_DB_QUERY, [](const Request &r, uint8_t *out, size_t *len) { return db::rpc_exec_db_query(r.msg.query, out, len); } },
|
// { Functions_FUNC_EXEC_DB_QUERY, [](const Request &r, uint8_t *out, size_t *len) { return db::rpc_exec_db_query(r.msg.query, out, len); } },
|
||||||
// { Functions_FUNC_ACCEPT_FRIEND, [](const Request &r, uint8_t *out, size_t *len) { return contact::rpc_accept_friend(r.msg.v, out, len); } },
|
// { Functions_FUNC_ACCEPT_FRIEND, [](const Request &r, uint8_t *out, size_t *len) { return contact::rpc_accept_friend(r.msg.v, out, len); } },
|
||||||
// { Functions_FUNC_RECV_TRANSFER, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_receive_transfer(r.msg.tf, out, len); } },
|
// { Functions_FUNC_RECV_TRANSFER, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_receive_transfer(r.msg.tf, out, len); } },
|
||||||
|
Loading…
Reference in New Issue
Block a user