1 Star 0 Fork 1

陈奇/ComWeChatRobot

forked from Janisa/ComWeChatRobot 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
GetChatRoomMembers.cpp 1.67 KB
一键复制 编辑 原始数据 按行查看 历史
Jack Li 提交于 3年前 . 优化多开管理
#include "pch.h"
struct ChatRoomInfoStruct {
DWORD members;
DWORD length;
};
SAFEARRAY* GetChatRoomMembers(DWORD pid,wchar_t* chatroomid) {
HRESULT hr = S_OK;
WeChatProcess hp(pid);
if (!hp.m_init) return NULL;
DWORD GetChatRoomMembersRemoteAddr = hp.GetProcAddr(GetChatRoomMembersRemote);
if (GetChatRoomMembersRemoteAddr == 0)
return NULL;
WeChatData<wchar_t*> r_chatroomid(hp.GetHandle(), chatroomid, TEXTLENGTH(chatroomid));
if (r_chatroomid.GetAddr() == 0)
return NULL;
DWORD ret = CallRemoteFunction(hp.GetHandle(), GetChatRoomMembersRemoteAddr, r_chatroomid.GetAddr());
if (ret == 0) {
return NULL;
}
ChatRoomInfoStruct chatroominfo = { 0 };
ReadProcessMemory(hp.GetHandle(),(LPCVOID)ret,&chatroominfo,sizeof(ChatRoomInfoStruct),0);
wchar_t* members = new wchar_t[chatroominfo.length + 1];
ZeroMemory(members, (chatroominfo.length + 1) * 2);
ReadProcessMemory(hp.GetHandle(), (LPCVOID)chatroominfo.members, members, chatroominfo.length * 2, 0);
SAFEARRAYBOUND rgsaBound[2] = { {2,0},{2,0} };
SAFEARRAY* psaValue = SafeArrayCreate(VT_VARIANT, 2, rgsaBound);
long keyIndex[2] = { 0,0 };
keyIndex[0] = 0; keyIndex[1] = 0;
hr = SafeArrayPutElement(psaValue, keyIndex, &(_variant_t)L"chatroomid");
keyIndex[0] = 0; keyIndex[1] = 1;
hr = SafeArrayPutElement(psaValue, keyIndex, &(_variant_t)chatroomid);
keyIndex[0] = 1; keyIndex[1] = 0;
hr = SafeArrayPutElement(psaValue, keyIndex, &(_variant_t)L"members");
keyIndex[0] = 1; keyIndex[1] = 1;
hr = SafeArrayPutElement(psaValue, keyIndex, &(_variant_t)members);
delete[] members;
members = NULL;
return psaValue;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/chen_q_i/ComWeChatRobot.git
git@gitee.com:chen_q_i/ComWeChatRobot.git
chen_q_i
ComWeChatRobot
ComWeChatRobot
master

搜索帮助