wxdata.h 3.4 KB
Newer Older
1
#pragma once
L
ljc545w 已提交
2
#include <windows.h>
3 4
using namespace std;

5
// 用于Hook到数据后,给主线程发送信号
L
ljc545w 已提交
6
#define WM_WAIT_HOOK_DATA WM_USER + 0x1
7

8
/*
9 10 11 12 13 14 15 16
 * 微信中的基础数据结构
 * buffer:UNICODE字符串
 * length:`buffer`字符数
 * maxLength:`buffer`最大字符数
 * fill1:占位成员1,默认为0
 * fill2:占位成员2,默认为0
 * WxString:默认构造函数
 */
L
ljc545w 已提交
17
struct WxString
18
{
L
ljc545w 已提交
19
    wchar_t *buffer;
20 21 22 23
    DWORD length;
    DWORD maxLength;
    DWORD fill1 = 0;
    DWORD fill2 = 0;
L
ljc545w 已提交
24 25 26 27
    WxString()
    {
        WxString(NULL);
    }
L
ljc545w 已提交
28
    WxString(wstring &str)
L
ljc545w 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
    {
        buffer = (wchar_t *)str.c_str();
        length = str.length();
        maxLength = str.length() * 2;
    }
    WxString(const wchar_t *pStr)
    {
        WxString((wchar_t *)pStr);
    }
    WxString(int tmp)
    {
        buffer = NULL;
        length = 0x0;
        maxLength = 0x0;
    }
    WxString(wchar_t *pStr)
    {
        buffer = pStr;
        length = wcslen(pStr);
        maxLength = wcslen(pStr) * 2;
    }
50 51 52
};

/*
53 54 55 56 57 58 59
 * 保存单条信息的结构
 * messagetype:消息类型
 * sender:发送者wxid
 * wxid:如果sender是群聊id,则此成员保存具体发送人wxid,否则与`sender`一致
 * message:消息内容,非文本消息是xml格式
 * filepath:图片、文件及其他资源的保存路径
 */
L
ljc545w 已提交
60 61 62 63 64 65 66 67 68 69 70
struct ReceiveMsgStruct
{
    DWORD pid = 0;
    DWORD messagetype = 0;
    BOOL isSendMessage = 0;
    unsigned long long msgid = 0;
    wstring sender;
    wstring wxid;
    wstring message;
    wstring filepath;
    wstring time;
71
    wstring extrainfo;
L
ljc545w 已提交
72 73
    ~ReceiveMsgStruct()
    {
L
ljc545w 已提交
74
    }
75 76 77
};

// vector在内存中的表现形式
L
ljc545w 已提交
78 79
struct VectorStruct
{
80 81 82 83 84 85 86 87
#ifdef _DEBUG
    DWORD v_head;
#endif
    DWORD v_data;
    DWORD v_end1;
    DWORD v_end2;
};

L
ljc545w 已提交
88 89
struct UserInfo
{
90
    int errcode;
L
ljc545w 已提交
91
    wchar_t *keyword;
92
    int l_keyword;
L
ljc545w 已提交
93
    wchar_t *v3;
94
    int l_v3;
L
ljc545w 已提交
95
    wchar_t *NickName;
96
    int l_NickName;
L
ljc545w 已提交
97
    wchar_t *Signature;
98
    int l_Signature;
L
ljc545w 已提交
99
    wchar_t *v2;
100
    int l_v2;
L
ljc545w 已提交
101
    wchar_t *Nation;
102
    int l_Nation;
L
ljc545w 已提交
103
    wchar_t *Province;
104
    int l_Province;
L
ljc545w 已提交
105
    wchar_t *City;
106
    int l_City;
L
ljc545w 已提交
107
    wchar_t *BigAvatar;
108
    int l_BigAvatar;
L
ljc545w 已提交
109
    wchar_t *SmallAvatar;
110 111 112 113 114 115
    int l_SmallAvatar;
    DWORD sex;
    BOOL over;
};

/*
116 117 118 119 120 121
 * 保存数据库单个表信息的结构体
 * name:表名;l_name:`name`字符数
 * tbl_name:表名;l_tbl_name:`tbl_name`字符数
 * sql:建表语句;l_sql:`sql`字符数
 * rootpage:表编号;l_rootpage:`rootpage`字符数
 */
L
ljc545w 已提交
122 123 124
struct TableInfoStruct
{
    char *name;
125
    DWORD l_name;
L
ljc545w 已提交
126
    char *tbl_name;
127
    DWORD l_tbl_name;
L
ljc545w 已提交
128
    char *sql;
129
    DWORD l_sql;
L
ljc545w 已提交
130
    char *rootpage;
131 132 133 134
    DWORD l_rootpage;
};

/*
135 136 137 138 139 140 141
 * 保存数据库信息的结构体
 * handle:数据库句柄
 * dbname:数据库名
 * l_dbname:`dbname`字符数
 * tables:保存库中所有表信息的容器
 * count:库中表的数量
 */
L
ljc545w 已提交
142 143
struct DbInfoStruct
{
144
    DWORD handle;
L
ljc545w 已提交
145
    wchar_t *dbname;
146 147 148 149 150 151
    DWORD l_dbname;
    vector<TableInfoStruct> tables;
    DWORD count;
};

/*
152 153 154 155 156 157 158
 * 保存单个好友信息的结构体
 * wxIdAddr:wxid保存地址
 * wxNumberAddr:微信号保存地址
 * wxNickNameAddr:昵称保存地址
 * wxRemarkAddr:备注保存地址
 * WxFriendStructW:默认构造函数
 */
L
ljc545w 已提交
159 160
struct WxFriendStruct
{
161 162 163 164
    DWORD wxIdAddr;
    DWORD wxNumberAddr;
    DWORD wxNickNameAddr;
    DWORD wxRemarkAddr;
L
ljc545w 已提交
165 166
    WxFriendStruct(DWORD wxIdAddr, DWORD wxNumberAddr, DWORD wxNickNameAddr, DWORD wxRemarkAddr)
    {
167 168 169 170 171
        this->wxIdAddr = wxIdAddr;
        this->wxNumberAddr = wxNumberAddr;
        this->wxNickNameAddr = wxNickNameAddr;
        this->wxRemarkAddr = wxRemarkAddr;
    }
L
ljc545w 已提交
172
};
L
ljc545w 已提交
173 174 175 176 177 178

struct GetPublicMsgStruct
{
    wchar_t *PublicId;
    wchar_t *Offset;
};