#include "common.h" #include "version.h" CLIST_INTERFACE *pcli; int hLangpack; HINSTANCE g_hInstance; PLUGININFOEX pluginInfo = { sizeof(PLUGININFOEX), __PLUGIN_NAME, PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), __DESCRIPTION, __AUTHOR, __AUTHOREMAIL, __COPYRIGHT, __AUTHORWEB, UNICODE_AWARE, //not transient // {4f1ff7fa-4d75-44b9-93b0-2ced2e4f9e3e} { 0x4f1ff7fa, 0x4d75, 0x44b9, { 0x93, 0xb0, 0x2c, 0xed, 0x2e, 0x4f, 0x9e, 0x3e } } }; ///////////////////////////////////////////////////////////////////////////// // Protocol instances static int compare_protos(const WhatsAppProto *p1, const WhatsAppProto *p2) { return mir_tstrcmp(p1->m_tszUserName, p2->m_tszUserName); } OBJLIST g_Instances(1, compare_protos); DWORD WINAPI DllMain(HINSTANCE hInstance, DWORD, LPVOID) { g_hInstance = hInstance; return TRUE; } extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) { return &pluginInfo; } ///////////////////////////////////////////////////////////////////////////////////////// // Interface information extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOCOL, MIID_LAST }; ///////////////////////////////////////////////////////////////////////////////////////// // Load static PROTO_INTERFACE* protoInit(const char *proto_name, const TCHAR *username) { WhatsAppProto *proto = new WhatsAppProto(proto_name, username); g_Instances.insert(proto); return proto; } static int protoUninit(PROTO_INTERFACE* proto) { g_Instances.remove((WhatsAppProto*)proto); return EXIT_SUCCESS; } extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); mir_getCLI(); PROTOCOLDESCRIPTOR pd = { sizeof(pd) }; pd.szName = "WhatsApp"; pd.type = PROTOTYPE_PROTOCOL; pd.fnInit = protoInit; pd.fnUninit = protoUninit; CallService(MS_PROTO_REGISTERMODULE, 0, reinterpret_cast(&pd)); InitIcons(); //InitContactMenus(); // Init native User-Agent WORD v[4]; CallService(MS_SYSTEM_GETFILEVERSION, 0, LPARAM(&v)); WAConnection::globalInit(); return 0; } ///////////////////////////////////////////////////////////////////////////////////////// // Unload extern "C" int __declspec(dllexport) Unload(void) { g_Instances.destroy(); WASocketConnection::quitNetwork(); return 0; }