// Initializes the services provided and the link to those needed // Called when the plugin is loaded into Miranda int LoadMetacontacts(void) { Icon_Register(g_hInst, LPGEN("MetaContacts"), iconList, _countof(iconList), "mc"); db_set_resident(META_PROTO, "Status"); db_set_resident(META_PROTO, "IdleTS"); //set all contacts to 'offline', and initialize subcontact counter for db consistency check for (MCONTACT hContact = db_find_first(META_PROTO); hContact; hContact = db_find_next(hContact, META_PROTO)) { db_set_w(hContact, META_PROTO, "Status", ID_STATUS_OFFLINE); db_set_dw(hContact, META_PROTO, "IdleTS", 0); } Meta_ReadOptions(); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = META_FILTER; pd.type = PROTOTYPE_FILTER; Proto_RegisterModule(&pd); pd.szName = META_PROTO; pd.type = PROTOTYPE_VIRTUAL; Proto_RegisterModule(&pd); // further db setup done in modules loaded (nick [protocol string required] & clist display name) Meta_InitServices(); return 0; }
extern "C" int __declspec(dllexport)Load(void) { mir_getLP(&pluginInfo); mir_getCLI(); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "YAHOO"; pd.type = PROTOTYPE_PROTOCOL; pd.fnInit = (pfnInitProto)yahooProtoInit; pd.fnUninit = (pfnUninitProto)yahooProtoUninit; Proto_RegisterModule(&pd); NETLIBUSER nlu = { 0 }; nlu.cbSize = sizeof(nlu); nlu.flags = NUF_TCHAR | NUF_OUTGOING | NUF_HTTPCONNS; nlu.szSettingsModule = "YAHOO/libyahoo2"; nlu.ptszDescriptiveName = TranslateT("YAHOO plugin HTTP connections"); g_hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); YmsgrLinksInit(); /** * Register LibYahoo2 callback functions */ register_callbacks(); return 0; }
EXTERN_C int __declspec(dllexport) Load(void) { mir_getLP(&Global_pluginInfo); if (false == CModuleInfo::Verify()) return 1; Quotes_IconsInit(); Quotes_InitExtraIcons(); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = PROTOCOLDESCRIPTOR_V3_SIZE; pd.szName = QUOTES_PROTOCOL_NAME; pd.type = PROTOTYPE_VIRTUAL; Proto_RegisterModule(&pd); CreateProtoServiceFunction(QUOTES_PROTOCOL_NAME, PS_GETSTATUS, QuoteProtoFunc_GetStatus); HookEvent(ME_SYSTEM_MODULESLOADED, QuotesEventFunc_OnModulesLoaded); HookEvent(ME_DB_CONTACT_DELETED, QuotesEventFunc_OnContactDeleted); HookEvent(ME_SYSTEM_PRESHUTDOWN, QuotesEventFunc_PreShutdown); HookEvent(ME_OPT_INITIALISE, QuotesEventFunc_OptInitialise); CreateServiceFunction(MS_QUOTES_EXPORT, Quotes_Export); CreateServiceFunction(MS_QUOTES_IMPORT, Quotes_Import); return 0; }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); NETLIBUSER nlu = { 0 }; nlu.cbSize = sizeof(nlu); nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS | NUF_UNICODE; nlu.ptszDescriptiveName = _T(MODULE); nlu.szSettingsModule = MODULE; hNetlib = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = MODULE; pd.type = PROTOTYPE_FILTER; Proto_RegisterModule(&pd); CreateProtoServiceFunction(MODULE, PSR_MESSAGE, FilterRecvMessage); /*CreateProtoServiceFunction(MODULE, PSR_AUTH, FilterRecvAuth); CreateProtoServiceFunction(MODULE, PSR_FILE, FilterRecvFile); CreateProtoServiceFunction(MODULE, PSR_URL, FilterRecvUrl); CreateProtoServiceFunction(MODULE, PSR_CONTACTS, FilterRecvUrl); CreateProtoServiceFunction(MODULE, PSR_AWAYMSG, FilterRecvUrl);*/ return 0; }
CDropbox::CDropbox() : transfers(1, HandleKeySortT) { PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = MODULE; pd.type = PROTOTYPE_VIRTUAL; Proto_RegisterModule(&pd); HookEvent(ME_PROTO_ACK, OnProtoAck); HookEvent(ME_SYSTEM_PRESHUTDOWN, OnPreShutdown); HookEventObj(ME_SYSTEM_MODULESLOADED, GlobalEvent<&CDropbox::OnModulesLoaded>, this); hFileSentEventHook = CreateHookableEvent(ME_DROPBOX_SENT); CreateServiceFunctionObj(MS_DROPBOX_SEND_FILE, GlobalService<&CDropbox::SendFileToDropbox>, this); CreateProtoServiceFunction(MODULE, PS_GETCAPS, ProtoGetCaps); CreateProtoServiceFunction(MODULE, PS_GETNAME, ProtoGetName); CreateProtoServiceFunction(MODULE, PS_LOADICON, ProtoLoadIcon); CreateProtoServiceFunctionObj(PS_GETSTATUS, GlobalService<&CDropbox::ProtoGetStatus>, this); CreateProtoServiceFunctionObj(PSS_FILE, GlobalService<&CDropbox::ProtoSendFile>, this); CreateProtoServiceFunctionObj(PSS_FILECANCEL, GlobalService<&CDropbox::ProtoCancelFile>, this); CreateProtoServiceFunctionObj(PSS_MESSAGE, GlobalService<&CDropbox::ProtoSendMessage>, this); CreateProtoServiceFunction(MODULE, PSR_MESSAGE, ProtoReceiveMessage); InitializeMenus(); hFileProcess = hMessageProcess = 1; }
extern "C" int __declspec(dllexport) __cdecl Load() { mir_getLP(&pluginInfo); g_lan = new CMLan(); PROTOCOLDESCRIPTOR pd = { PROTOCOLDESCRIPTOR_V3_SIZE }; pd.szName = PROTONAME; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); CreateProtoServiceFunction(PROTONAME, PS_GETCAPS, EMPGetCaps); CreateProtoServiceFunction(PROTONAME, PS_GETNAME, EMPGetName); CreateProtoServiceFunction(PROTONAME, PS_LOADICON, EMPLoadIcon); CreateProtoServiceFunction(PROTONAME, PS_SETSTATUS, EMPSetStatus); CreateProtoServiceFunction(PROTONAME, PS_GETSTATUS, EMPGetStatus); CreateProtoServiceFunction(PROTONAME, PS_BASICSEARCH, EMPBasicSearch); CreateProtoServiceFunction(PROTONAME, PS_ADDTOLIST, EMPAddToList); CreateProtoServiceFunction(PROTONAME, PSS_MESSAGE, EMPSendMessage); CreateProtoServiceFunction(PROTONAME, PSS_URL, EMPSendUrl); CreateProtoServiceFunction(PROTONAME, PSR_MESSAGE, EMPRecvMessageUrl); CreateProtoServiceFunction(PROTONAME, PSR_URL, EMPRecvMessageUrl); CreateProtoServiceFunction(PROTONAME, PSS_GETAWAYMSG, EMPGetAwayMsg); CreateProtoServiceFunction(PROTONAME, PS_SETAWAYMSG, EMPSetAwayMsg); CreateProtoServiceFunction(PROTONAME, PSR_AWAYMSG, EMPRecvAwayMessage); CreateProtoServiceFunction(PROTONAME, PS_FILERESUME, EMPFileResume); CreateProtoServiceFunction(PROTONAME, PSS_FILEALLOW, EMPSendFileAllow); CreateProtoServiceFunction(PROTONAME, PSS_FILEDENY, EMPSendFileDeny); CreateProtoServiceFunction(PROTONAME, PSS_FILECANCEL, EMPSendFileCancel); CreateProtoServiceFunction(PROTONAME, PSS_FILE, EMPSendFile); CreateProtoServiceFunction(PROTONAME, PSR_FILE, EMPRecvFile); HookEvent(ME_OPT_INITIALISE, EMPCreateOptionsDlg); return 0; }
extern "C" int __declspec(dllexport) Load() { mir_getLP(&pluginInfo); mir_getCLI(); InitIcons(); // Register protocol module PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "VKontakte"; pd.fnInit = (pfnInitProto)vkProtoInit; pd.fnUninit = (pfnUninitProto)vkProtoUninit; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); return 0; }
extern "C" int __declspec(dllexport) Load() { mir_getLP(&pluginInfo); mir_getCLI(); // Register protocol module PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "Dummy"; pd.fnInit = (pfnInitProto)dummyProtoInit; pd.fnUninit = (pfnUninitProto)dummyProtoUninit; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); return 0; }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); mir_getCLI(); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "Twitter"; pd.type = PROTOTYPE_PROTOCOL; pd.fnInit = protoInit; pd.fnUninit = protoUninit; Proto_RegisterModule(&pd); InitIcons(); InitContactMenus(); return 0; }
extern "C" int __declspec(dllexport) Load() { // set the memory, lists & utf8 managers mir_getLP(&pluginInfo); mir_getCLI(); { INT_PTR result = CallService(MS_IMG_GETINTERFACE, FI_IF_VERSION, (LPARAM)&FIP); if (FIP == NULL || result != S_OK) { MessageBoxEx(NULL, TranslateT("Fatal error, image services not found. Jabber Protocol will be disabled."), _T("Error"), MB_OK | MB_ICONERROR | MB_APPLMODAL, 0); return 1; } } WORD v[4]; CallService(MS_SYSTEM_GETFILEVERSION, 0, (LPARAM)v); mir_sntprintf(szCoreVersion, _T("%d.%d.%d.%d"), v[0], v[1], v[2], v[3]); CallService(MS_UTILS_GETCOUNTRYLIST, (WPARAM)&g_cbCountries, (LPARAM)&g_countries); hExtListInit = CreateHookableEvent(ME_JABBER_EXTLISTINIT); hDiscoInfoResult = CreateHookableEvent(ME_JABBER_SRVDISCOINFO); // Register protocol module PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "JABBER"; pd.fnInit = (pfnInitProto)jabberProtoInit; pd.fnUninit = (pfnUninitProto)jabberProtoUninit; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); g_IconsInit(); g_XstatusIconsInit(); // Init extra icons hExtraActivity = ExtraIcon_RegisterIcolib("activity", LPGEN("Jabber Activity"), "jabber_dancing"); hExtraMood = ExtraIcon_RegisterIcolib("mood", LPGEN("Jabber Mood"), "jabber_contemplative"); g_MenuInit(); HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); JabberUserInfoInit(); return 0; }
extern "C" __declspec(dllexport) int Load() { mir_getLP(&pluginInfo); char fileName[MAX_PATH]; GetModuleFileNameA(hInstance, fileName, MAX_PATH); WIN32_FIND_DATAA findData; FindClose(FindFirstFileA(fileName, &findData)); findData.cFileName[strlen(findData.cFileName) - 4] = 0; strncpy_s(protoName, findData.cFileName, _TRUNCATE); PROTOCOLDESCRIPTOR pd = { PROTOCOLDESCRIPTOR_V3_SIZE }; pd.szName = protoName; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); LoadServices(); return 0; }
extern "C" __declspec(dllexport) int Load(void) { DEBUGOUT_T("LOAD MIROTR"); mir_getLP(&pluginInfo); mir_getCLI(); InitIcons(); OTRL_INIT; INITCOMMONCONTROLSEX icce = {0}; icce.dwSize = sizeof(icce); icce.dwICC = ICC_LISTVIEW_CLASSES|ICC_PROGRESS_CLASS; InitCommonControlsEx(&icce); db_set_resident(MODULENAME, "TrustLevel"); //////////////////////////////////////////////////////////////////////////// // init plugin PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = MODULENAME; pd.type = PROTOTYPE_ENCRYPTION; Proto_RegisterModule(&pd); // remove us as a filter to all contacts - fix filter type problem if(db_get_b(0, MODULENAME, "FilterOrderFix", 0) != 2) { for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) Proto_RemoveFromContact(hContact, MODULENAME); db_set_b(0, MODULENAME, "FilterOrderFix", 2); } // create our services CreateProtoServiceFunction(MODULENAME, PSS_MESSAGE, SVC_OTRSendMessage); CreateProtoServiceFunction(MODULENAME, PSR_MESSAGE, SVC_OTRRecvMessage); // hook modules loaded for updater support HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); return 0; }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); mir_getCLI(); DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0); srand((unsigned)time(NULL)); TlenRegisterIcons(); // Register protocol module PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "TLEN"; pd.fnInit = (pfnInitProto)tlenProtoInit; pd.fnUninit = (pfnUninitProto)tlenProtoUninit; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); return 0; }
extern "C" int __declspec(dllexport) Load(void) { g_hToxLibrary = LoadLibrary(_T("libtox.dll")); if (g_hToxLibrary == NULL) return 0; mir_getCLI(); mir_getLP(&pluginInfo); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "TOX"; pd.type = PROTOTYPE_PROTOCOL; pd.fnInit = (pfnInitProto)CToxProto::InitAccount; pd.fnUninit = (pfnUninitProto)CToxProto::UninitAccount; Proto_RegisterModule(&pd); HookEvent(ME_SYSTEM_MODULESLOADED, &CToxProto::OnModulesLoaded); return 0; }
extern "C" int __declspec(dllexport) Load(void) { #ifdef _DEBUG _OutputDebugString(_T("Entering Load dll")); #endif mir_getLP(&pluginInfo); mir_getCLI(); hExceptionsMutex = CreateMutex(NULL, FALSE, _T("ExceptionsMutex")); LoadSettings(); connExceptions = LoadSettingsConnections(); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = PLUGINNAME; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); //set all contacts to offline for (MCONTACT hContact = db_find_first(PLUGINNAME); hContact != NULL; hContact = db_find_next(hContact, PLUGINNAME)) db_set_w(hContact, PLUGINNAME, "status", ID_STATUS_OFFLINE); CreateProtoServiceFunction(PLUGINNAME, PS_GETCAPS, GetCaps); CreateProtoServiceFunction(PLUGINNAME, PS_GETNAME, GetName); CreateProtoServiceFunction(PLUGINNAME, PS_LOADICON, TMLoadIcon); CreateProtoServiceFunction(PLUGINNAME, PS_SETSTATUS, SetStatus); CreateProtoServiceFunction(PLUGINNAME, PS_GETSTATUS, GetStatus); SkinAddNewSoundEx(PLUGINNAME_NEWSOUND, PLUGINNAME, LPGEN("New Connection Notification")); hOptInit = HookEvent(ME_OPT_INITIALISE, ConnectionNotifyOptInit);//register service to hook option call assert(hOptInit); hHookModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, modulesloaded);//hook event that all plugins are loaded assert(hHookModulesLoaded); hHookPreShutdown = HookEvent(ME_SYSTEM_PRESHUTDOWN, preshutdown); return 0; }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); mir_getCLI(); CallService(MS_SYSTEM_GETVERSIONTEXT, sizeof(g_szMirVer), LPARAM(g_szMirVer)); PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "SKYPE"; pd.type = PROTOTYPE_PROTOCOL; pd.fnInit = (pfnInitProto)CSkypeProto::InitAccount; pd.fnUninit = (pfnUninitProto)CSkypeProto::UninitAccount; Proto_RegisterModule(&pd); CSkypeProto::InitIcons(); CSkypeProto::InitMenus(); CSkypeProto::InitLanguages(); CreateServiceFunction(MODULE"/GetEventIcon", &CSkypeProto::EventGetIcon); CreateServiceFunction(MODULE"/GetCallText", &CSkypeProto::GetCallEventText); HookEvent(ME_SYSTEM_MODULESLOADED, &CSkypeProto::OnModulesLoaded); return 0; }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); YAMN_STATUS = ID_STATUS_OFFLINE; // we get the Miranda Root Path PathToAbsoluteT( _T("."), szMirandaDir); // retrieve the current profile name CallService(MS_DB_GETPROFILENAMET, (WPARAM)_countof(ProfileName), (LPARAM)ProfileName); //not to pass entire array to fcn TCHAR *fc = _tcsrchr(ProfileName, '.'); if ( fc != NULL ) *fc = 0; // we get the user path where our yamn-account.book.ini is stored from mirandaboot.ini file GetProfileDirectory(UserDirectory, _countof(UserDirectory)); // Enumerate all the code pages available for the System Locale EnumSystemCodePages(EnumSystemCodePagesProc, CP_INSTALLED); CodePageNamesSupp = new _tcptable[CPLENSUPP]; for (int i = 0, k = 0; i < CPLENALL; i++) { if (CodePageNamesAll[i].isValid) { CodePageNamesSupp[k] = CodePageNamesAll[i]; k++; } } // Registering YAMN as protocol PROTOCOLDESCRIPTOR pd = { PROTOCOLDESCRIPTOR_V3_SIZE }; pd.szName = YAMN_DBMODULE; pd.type = PROTOTYPE_VIRTUAL; Proto_RegisterModule(&pd); InitializeCriticalSection(&AccountStatusCS); InitializeCriticalSection(&FileWritingCS); InitializeCriticalSection(&PluginRegCS); if (NULL == (NoWriterEV = CreateEvent(NULL, TRUE, TRUE, NULL))) return 1; if (NULL == (WriteToFileEV = CreateEvent(NULL, FALSE, FALSE, NULL))) return 1; if (NULL == (ExitEV = CreateEvent(NULL, TRUE, FALSE, NULL))) return 1; PosX = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBPOSX, 0); PosY = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBPOSY, 0); SizeX = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBSIZEX, 800); SizeY = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBSIZEY, 200); HeadPosX = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBMSGPOSX, 0); HeadPosY = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBMSGPOSY, 0); HeadSizeX = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBMSGSIZEX, 690); HeadSizeY = db_get_dw(NULL, YAMN_DBMODULE, YAMN_DBMSGSIZEY, 300); HeadSplitPos = db_get_w(NULL, YAMN_DBMODULE, YAMN_DBMSGPOSSPLIT, 250); optDateTime = db_get_b(NULL, YAMN_DBMODULE, YAMN_DBTIMEOPTIONS, optDateTime); // Create new window queues for broadcast messages YAMNVar.MessageWnds = WindowList_Create(); YAMNVar.NewMailAccountWnd = WindowList_Create(); YAMNVar.Shutdown = FALSE; hCurSplitNS = LoadCursor(NULL, IDC_SIZENS); hCurSplitWE = LoadCursor(NULL, IDC_SIZEWE); #ifdef _DEBUG InitDebug(); #endif CreateServiceFunctions(); SkinAddNewSoundEx(YAMN_NEWMAILSOUND, YAMN_DBMODULE, YAMN_NEWMAILSNDDESC); SkinAddNewSoundEx(YAMN_CONNECTFAILSOUND, YAMN_DBMODULE, YAMN_CONNECTFAILSNDDESC); HookEvents(); LoadIcons(); LoadPlugins(); HOTKEYDESC hkd = {0}; hkd.cbSize = sizeof(hkd); hkd.pszName = "YAMN_hotkey"; hkd.pszService = MS_YAMN_FORCECHECK; hkd.pszSection = YAMN_DBMODULE; hkd.pszDescription = LPGEN("Check mail"); hkd.DefHotKey = HOTKEYCODE(HOTKEYF_CONTROL, VK_F11); Hotkey_Register(&hkd); //Create thread that will be executed every second if (!(SecTimer = SetTimer(NULL, 0, 1000, TimerProc))) return 1; return 0; }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfoEx); mir_getCLI(); // initialize global variables InitVar(); // load options and set defaults LoadOptions(); InitIcons(); // reset the weather data at startup for individual contacts EraseAllInfo(); // load weather update data LoadWIData(true); // set status to online if "Do not display weather condition as protocol status" is enabled old_status = status = ID_STATUS_OFFLINE; // add an event on weather update and error hHookWeatherUpdated = CreateHookableEvent(ME_WEATHER_UPDATED); hHookWeatherError = CreateHookableEvent(ME_WEATHER_ERROR); // initialize options and network HookEvent(ME_OPT_INITIALISE, OptInit); HookEvent(ME_SYSTEM_MODULESLOADED, WeatherInit); HookEvent(ME_DB_CONTACT_DELETED, ContactDeleted); HookEvent(ME_CLIST_DOUBLECLICKED, BriefInfo); HookEvent(ME_WEATHER_UPDATED, WeatherPopup); HookEvent(ME_WEATHER_ERROR, WeatherError); HookEvent(ME_SYSTEM_PRESHUTDOWN, WeatherShutdown); HookEvent(ME_CLIST_PREBUILDCONTACTMENU, BuildContactMenu); hDataWindowList = WindowList_Create(); hWindowList = WindowList_Create(); hUpdateMutex = CreateMutex(NULL, FALSE, NULL); // register weather protocol PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = WEATHERPROTONAME; pd.type = (opt.NoProtoCondition) ? PROTOTYPE_VIRTUAL : PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); // initialize weather protocol services InitServices(); // add sound event SkinAddNewSoundExT("weatherupdated", _T(WEATHERPROTONAME), LPGENT("Weather Condition Changed")); SkinAddNewSoundExT("weatheralert", _T(WEATHERPROTONAME), LPGENT("Weather Alert Issued")); // window needed for popup commands TCHAR SvcFunc[100]; mir_sntprintf(SvcFunc, _T("%s__PopupWindow"), _T(WEATHERPROTONAME)); hPopupWindow = CreateWindowEx(WS_EX_TOOLWINDOW, _T("static"), SvcFunc, 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, hInst, NULL); SetWindowLongPtr(hPopupWindow, GWLP_WNDPROC, (LONG_PTR)PopupWndProc); return 0; }
extern "C" int __declspec(dllexport) Load() { mir_getLP(&pluginInfoEx); mir_getCLI(); SkinAddNewSoundEx("Gmail", LPGEN("Other"), LPGEN("Gmail: New thread(s)")); HookEvent(ME_CLIST_DOUBLECLICKED, OpenBrowser); PROTOCOLDESCRIPTOR pd = { PROTOCOLDESCRIPTOR_V3_SIZE }; pd.szName = MODULE_NAME; pd.type = PROTOTYPE_VIRTUAL; Proto_RegisterModule(&pd); CreateProtoServiceFunction(MODULE_NAME, PS_GETCAPS, GetCaps); CreateProtoServiceFunction(MODULE_NAME, PS_GETSTATUS, GetStatus); CreateProtoServiceFunction(MODULE_NAME, PS_GETNAME, GetName); CreateServiceFunction("GmailMNotifier/Notifying", Notifying); opt.circleTime = db_get_dw(NULL, MODULE_NAME, "circleTime", 30); opt.notifierOnTray = db_get_dw(NULL, MODULE_NAME, "notifierOnTray", TRUE); opt.notifierOnPop = db_get_dw(NULL, MODULE_NAME, "notifierOnPop", TRUE); opt.popupDuration = db_get_dw(NULL, MODULE_NAME, "popupDuration", -1); opt.popupBgColor = db_get_dw(NULL, MODULE_NAME, "popupBgColor", RGB(173, 206, 247)); opt.popupTxtColor = db_get_dw(NULL, MODULE_NAME, "popupTxtColor", RGB(0, 0, 0)); opt.OpenUsePrg = db_get_dw(NULL, MODULE_NAME, "OpenUsePrg", 0); opt.ShowCustomIcon = db_get_dw(NULL, MODULE_NAME, "ShowCustomIcon", FALSE); opt.UseOnline = db_get_dw(NULL, MODULE_NAME, "UseOnline", FALSE); opt.AutoLogin = db_get_dw(NULL, MODULE_NAME, "AutoLogin", TRUE); opt.LogThreads = db_get_dw(NULL, MODULE_NAME, "LogThreads", FALSE); DBVARIANT dbv; if (db_get_s(NULL, "Icons", "GmailMNotifier40076", &dbv)) { db_set_s(NULL, "Icons", "GmailMNotifier40071", "plugins\\gmailm.dll,2"); db_set_s(NULL, "Icons", "GmailMNotifier40072", "plugins\\gmailm.dll,2"); db_set_s(NULL, "Icons", "GmailMNotifier40076", "plugins\\gmailm.dll,0"); db_set_s(NULL, "Icons", "GmailMNotifier40073", "plugins\\gmailm.dll,1"); } else db_free(&dbv); BuildList(); ID_STATUS_NONEW = opt.UseOnline ? ID_STATUS_ONLINE : ID_STATUS_OFFLINE; for (int i = 0; i < acc_num; i++) db_set_dw(acc[i].hContact, MODULE_NAME, "Status", ID_STATUS_NONEW); hTimer = SetTimer(NULL, 0, opt.circleTime * 60000, TimerProc); hMirandaStarted = HookEvent(ME_SYSTEM_MODULESLOADED, OnMirandaStart); hOptionsInitial = HookEvent(ME_OPT_INITIALISE, OptInit); CreateServiceFunction(MODULE_NAME "/MenuCommand", PluginMenuCommand); CMenuItem mi; SET_UID(mi, 0xbe16f37, 0x17be, 0x4494, 0xaa, 0xb2, 0x3a, 0xa7, 0x38, 0xfa, 0xf9, 0xcc); mi.position = -0x7FFFFFFF; mi.hIcolibItem = Skin_LoadProtoIcon(MODULE_NAME, ID_STATUS_ONLINE); mi.name.a = LPGEN("&Check all Gmail inboxes"); mi.pszService = MODULE_NAME "/MenuCommand"; Menu_AddMainMenuItem(&mi); SET_UID(mi, 0x22c6ace1, 0xba0c, 0x44b5, 0xa4, 0xd2, 0x1, 0x7d, 0xb1, 0xe0, 0x51, 0xeb); mi.name.a = LPGEN("&Check Gmail inbox"); mi.pszService = "/MenuCommand"; Menu_AddContactMenuItem(&mi, MODULE_NAME); return 0; }
extern "C" int __declspec(dllexport) Load() { mir_getLP(&pluginInfoEx); mir_getCLI(); HookEvent(ME_CLIST_DOUBLECLICKED, Doubleclick); hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_CONTEXT)); hRichEd = LoadLibrary(_T("Msftedit.dll")); /*TIMERS*/ if ((db_get_dw(NULL, MODULENAME, REFRESH_KEY, TIME) != 0)) { timerId = SetTimer(NULL, 0, ((db_get_dw(NULL, MODULENAME, REFRESH_KEY, TIME)) * MINUTE), timerfunc); db_set_dw(NULL, MODULENAME, COUNTDOWN_KEY, 0); Countdown = SetTimer(NULL, 0, MINUTE, Countdownfunc); } InitialiseGlobals(); // register netlib handle char tempNdesc[50]; mir_snprintf(tempNdesc, _countof(tempNdesc), "%s connection settings", MODULENAME); NETLIBUSER nlu = { sizeof(nlu) }; nlu.flags = NUF_OUTGOING | NUF_HTTPCONNS; nlu.szSettingsModule = MODULENAME; nlu.szDescriptiveName = tempNdesc; hNetlibUser = (HANDLE) CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM) & nlu); // register webview protocol PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = MODULENAME; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); //protocol services InitServices(); //add sound event to options SkinAddNewSoundExT("webviewalert", _T(MODULENAME), LPGENT("Alert event")); //value is 1 if menu is disabled db_set_b(NULL, MODULENAME, MENU_IS_DISABLED_KEY, 1); CMenuItem mi; mi.flags = CMIF_TCHAR; if ( db_get_b(NULL, MODULENAME, MENU_OFF, 0)) { //value is 0 if menu is enabled db_set_b(NULL, MODULENAME, MENU_IS_DISABLED_KEY, 0); /*DISABLE WEBVIEW*/ CreateServiceFunction("DisableWebview", AutoUpdateMCmd); mi.root = Menu_CreateRoot(MO_MAIN, _T(MODULENAME), 20200001); mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_SITE)); if (db_get_b(NULL, MODULENAME, DISABLE_AUTOUPDATE_KEY, 0)) mi.name.t = LPGENT("Auto update disabled"); else mi.name.t = LPGENT("Auto update enabled"); mi.pszService = "DisableWebview"; hMenuItem1 = Menu_AddMainMenuItem(&mi); // Update all webview contacts CreateServiceFunction("UpdateAll", UpdateAllMenuCommand); mi.position = 500090002; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_UPDATEALL)); mi.name.t = LPGENT("Update all Webview sites"); mi.pszService = "UpdateAll"; Menu_AddMainMenuItem(&mi); // Mark All Webview Sites As Read CreateServiceFunction("MarkAllSitesRead", MarkAllReadMenuCommand); mi.position = 500090099; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_MARKALLREAD)); mi.name.t = LPGENT("Mark all Webview sites as read"); mi.pszService = "MarkAllSitesRead"; Menu_AddMainMenuItem(&mi); // open cache directory CreateServiceFunction("OpenCacheFolder", OpenCacheDir); mi.position = 500090099; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_FOLDER)); mi.name.t = LPGENT("Open cache folder"); mi.pszService = "OpenCacheFolder"; Menu_AddMainMenuItem(&mi); // Countdown test CreateServiceFunction("Countdown", CountdownMenuCommand); mi.flags |= CMIF_KEEPUNTRANSLATED; TCHAR countername[100]; mir_sntprintf(countername, _countof(countername), TranslateT("%d minutes to update"), db_get_dw(NULL, MODULENAME, COUNTDOWN_KEY, 0)); mi.position = 600090099; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_UPDATEALL)); mi.name.t = countername; mi.pszService = "Countdown"; hMenuItemCountdown = Menu_AddMainMenuItem(&mi); } // contact menu mi.flags = CMIF_TCHAR; CreateServiceFunction("Open web page", WebsiteMenuCommand); mi.position = 100; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_URL)); mi.pszService = "Open web page"; mi.name.t = LPGENT("Open web page"); Menu_AddContactMenuItem(&mi, MODULENAME); CreateServiceFunction("OpenClose Window", DataWndMenuCommand); mi.pszService = "OpenClose Window"; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_SHOW_HIDE)); mi.name.t = LPGENT("Open/Close window"); Menu_AddContactMenuItem(&mi, MODULENAME); mi.position = 2222220; mi.pszService = "UpdateData"; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_UPDATE)); mi.name.t = LPGENT("Update data"); Menu_AddContactMenuItem(&mi, MODULENAME); CreateServiceFunction("ContactOptions", CntOptionsMenuCommand); mi.pszService = "ContactOptions"; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_OPTIONS)); mi.name.t = LPGENT("Contact options"); Menu_AddContactMenuItem(&mi, MODULENAME); CreateServiceFunction("ContactAlertOpts", CntAlertMenuCommand); mi.pszService = "ContactAlertOpts"; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ALERT)); mi.name.t = LPGENT("Contact alert options"); Menu_AddContactMenuItem(&mi, MODULENAME); CreateServiceFunction("PingWebsite", PingWebsiteMenuCommand); mi.pszService = "PingWebsite"; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_PING)); mi.name.t = LPGENT("Ping web site"); Menu_AddContactMenuItem(&mi, MODULENAME); CreateServiceFunction("StopDataProcessing", StpPrcssMenuCommand); mi.pszService = "StopDataProcessing"; mi.hIcolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_STOP)); mi.name.t = LPGENT("Stop data processing"); Menu_AddContactMenuItem(&mi, MODULENAME); hWindowList = WindowList_Create(); HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent(ME_DB_CONTACT_SETTINGCHANGED, DBSettingChanged); HookEvent(ME_DB_CONTACT_DELETED, SiteDeleted); db_set_b(NULL, MODULENAME, HAS_CRASHED_KEY, 1); return 0; }