wxdata.h 3.2 KB
Newer Older
1
#pragma once
L
ljc545w 已提交
2
#include <windows.h>
3 4 5 6 7 8 9 10 11
using namespace std;

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

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

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

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

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

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

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