// Copyright © 2010 sss // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" //global variables bool bMetaContacts = false; HINSTANCE hInst; PLUGINLINK *pluginLink; static int OnModulesLoaded(WPARAM wParam,LPARAM lParam); extern char *date(); MM_INTERFACE mmi = {0}; UTF8_INTERFACE utfi = {0}; #define MIID_REPLACER { 0x6587ce2, 0x3bf8, 0x4e74, { 0xa1, 0x87, 0x1e, 0xa8, 0x59, 0x6a, 0x6b, 0x5f } } PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), 0, PLUGIN_MAKE_VERSION(0,0,0,1), "simple word replacer", "sss", "sss123next@list.ru", "© 2010 sss", "http://sss.chaoslab.ru/tracker/mim_plugs", 1, //unicode 0, //doesn't replace anything built-in MIID_REPLACER }; BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) { hInst=hinstDLL; return TRUE; } extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) { static char plugname[52]; strcpy(plugname, szReplacerModuleName" ["); strcat(plugname, date()); strcat(plugname, " "); strcat(plugname, __TIME__); strcat(plugname, "]"); pluginInfo.shortName = plugname; return &pluginInfo; } static const MUUID interfaces[] = {MIID_REPLACER, MIID_LAST}; extern "C" __declspec(dllexport) const MUUID* MirandaPluginInterfaces(void) { return interfaces; } void init_vars() { } extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) { pluginLink=link; init_vars(); HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); mir_getMMI(&mmi); mir_getUTFI(&utfi); return 0; } int AddContact(WPARAM w, LPARAM l) { CallService(MS_PROTO_ADDTOCONTACT,w,(LPARAM)szReplacerModuleName); return 0; } static int OnModulesLoaded(WPARAM wParam,LPARAM lParam) { int SendMsgSvc(WPARAM w, LPARAM l); int ReplacerOptInit(WPARAM wParam,LPARAM lParam); bMetaContacts = ServiceExists(MS_MC_GETMETACONTACT); HookEvent(ME_OPT_INITIALISE, ReplacerOptInit); PROTOCOLDESCRIPTOR pd = {0}; pd.cbSize=sizeof(PROTOCOLDESCRIPTOR); pd.szName=szReplacerModuleName; pd.type=PROTOTYPE_ENCRYPTION; CallService(MS_PROTO_REGISTERMODULE,0,(LPARAM)&pd); CreateProtoServiceFunction(szReplacerModuleName,PSS_MESSAGE,(MIRANDASERVICE)SendMsgSvc); CreateProtoServiceFunction(szReplacerModuleName,PSS_MESSAGE"W",(MIRANDASERVICE)SendMsgSvc); for (HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); hContact; hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0)) if (!CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)hContact, (LPARAM)szReplacerModuleName)) CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContact, (LPARAM)szReplacerModuleName); HookEvent(ME_DB_CONTACT_ADDED,AddContact); return 0; } extern "C" int __declspec(dllexport) Unload(void) { return 0; }