#if !defined(AFX_MRA_H__F58D13FF_F6F2_476C_B8F0_7B9E9357CF48__INCLUDED_) #define AFX_MRA_H__F58D13FF_F6F2_476C_B8F0_7B9E9357CF48__INCLUDED_ #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include #include #include #include #pragma comment(lib,"shlwapi.lib") #include #include #include #include #include #include "../../libs/zlib/src/zlib.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define PROTO_VERSION_MAJOR 1 #define PROTO_VERSION_MINOR 21 #include "resource.h" #include "../xstatus_MRA/src/resource.h" #include "Sdk/MemoryFind.h" #include "Sdk/MemoryFindByte.h" #include "Sdk/BuffToLowerCase.h" #include "Sdk/StrHexToNum.h" #include "Sdk/timefuncs.h" #include "Sdk/InternetTime.h" #include "Sdk/ListMT.h" #include "Sdk/FIFOMT.h" #include "Sdk/RC4.h" #include "Sdk/SHA1.h" // LPS struct MRA_LPS { size_t dwSize; union { LPSTR lpszData; LPWSTR lpwszData; }; }; // GUID struct MRA_GUID { DWORD id[4]; }; struct MRA_ADDR_LIST_ITEM { DWORD dwPort; DWORD dwAddr; }; struct MRA_ADDR_LIST { DWORD dwAddrCount; MRA_ADDR_LIST_ITEM *pMailAddress; }; ///////////////////////////////////////////////////////////////////////////// class BinBuffer { LPBYTE m_data; size_t m_len; public: BinBuffer(LPBYTE data, size_t len) : m_data(data), m_len(len) {} DWORD getDword(); DWORDLONG getInt64(); MRA_GUID getGuid(); void getStringA(CMStringA&); void getStringW(CMStringW&); __forceinline bool eof() const { return m_len == 0; } }; __forceinline BinBuffer& operator >>(BinBuffer& buf, DWORD &dwVar) { dwVar = buf.getDword(); return buf; } __forceinline BinBuffer& operator >>(BinBuffer& buf, DWORDLONG &llVar) { llVar = buf.getInt64(); return buf; } __forceinline BinBuffer& operator >>(BinBuffer& buf, MRA_GUID &guid) { guid = buf.getGuid(); return buf; } __forceinline BinBuffer& operator >>(BinBuffer& buf, CMStringA &sVar) { buf.getStringA(sVar); return buf; } __forceinline BinBuffer& operator >>(BinBuffer& buf, CMStringW &sVar) { buf.getStringW(sVar); return buf; } ///////////////////////////////////////////////////////////////////////////// bool DB_GetStaticStringA(MCONTACT hContact, LPCSTR lpszModule, LPCSTR lpszValueName, LPSTR lpszRetBuff, size_t dwRetBuffSize, size_t *pdwRetBuffSize); bool DB_GetStaticStringW(MCONTACT hContact, LPCSTR lpszModule, LPCSTR lpszValueName, LPWSTR lpszRetBuff, size_t dwRetBuffSize, size_t *pdwRetBuffSize); bool DB_GetStringA(MCONTACT hContact, LPCSTR lpszModule, LPCSTR lpszValueName, CMStringA &Ret); bool DB_GetStringW(MCONTACT hContact, LPCSTR lpszModule, LPCSTR lpszValueName, CMStringW &Ret); bool DB_SetStringExA(MCONTACT hContact, LPCSTR lpszModule, LPCSTR lpszValueName, const CMStringA &value); bool DB_SetStringExW(MCONTACT hContact, LPCSTR lpszModule, LPCSTR lpszValueName, const CMStringW &value); bool DB_GetContactSettingBlob(MCONTACT hContact, LPCSTR lpszModule, LPCSTR lpszValueName, LPVOID lpRet, size_t dwRetBuffSize, size_t *pdwRetBuffSize); #include "MraConstans.h" #include "MraProto.h" extern IconItem gdiMenuItems[]; extern IconItem gdiContactMenuItems[]; extern IconItem gdiExtraStatusIconsItems[]; #include "proto.h" #include "MraMRIMProxy.h" #include "MraSendQueue.h" #include "MraFilesQueue.h" #include "MraPopup.h" #include "MraAvatars.h" #include "MraIcons.h" #include "MraSelectEMail.h" #include "MraMPop.h" ///////////////////////////////////////////////////////////////////////////////////////// // plugin options extern HINSTANCE g_hInstance; extern HMODULE g_hDLLXStatusIcons; extern HICON g_hMainIcon; extern bool g_bChatExist, g_bShutdown; extern size_t g_dwMirWorkDirPathLen; extern WCHAR g_szMirWorkDirPath[MAX_FILEPATH]; ///////////////////////////////////////////////////////////////////////////////////////// // External variables extern LIST g_Instances; extern HANDLE hXStatusAdvancedStatusIcons[]; void InitExtraIcons(); CMStringA MraGetSelfVersionString(); #define SetBit(bytes, bitpos) bytes |= (1<