INT_PTR DataWndMenuCommand(WPARAM wParam, LPARAM lParam) { MCONTACT hContact = wParam; HWND hwndDlg = WindowList_Find(hWindowList, hContact); if (hwndDlg != NULL) { DestroyWindow(hwndDlg); return 0; } HWND hTopmost = db_get_b(hContact, MODULENAME, ON_TOP_KEY, 0) ? HWND_TOPMOST : HWND_NOTOPMOST; hwndDlg = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DISPLAY_DATA), NULL, DlgProcDisplayData, (LPARAM) hContact); SendDlgItemMessage(hwndDlg, IDC_STICK_BUTTON, BM_SETIMAGE, IMAGE_ICON, (LPARAM) LoadImage(hInst, MAKEINTRESOURCE(IDI_STICK), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0)); if ( db_get_b(NULL, MODULENAME, SAVE_INDIVID_POS_KEY, 0)) SetWindowPos(hwndDlg, hTopmost, db_get_dw(hContact, MODULENAME, "WVx", 100), // Xposition, db_get_dw(hContact, MODULENAME, "WVy", 100), // Yposition, db_get_dw(hContact, MODULENAME, "WVwidth", 100), // WindowWidth, db_get_dw(hContact, MODULENAME, "WVheight", 100), 0); // WindowHeight, else SetWindowPos(hwndDlg, HWND_TOPMOST, Xposition, Yposition, WindowWidth, WindowHeight, 0); ShowWindow(hwndDlg, SW_SHOW); SetActiveWindow(hwndDlg); if ( db_get_b(NULL, MODULENAME, UPDATE_ON_OPEN_KEY, 0)) { if ( db_get_b(hContact, MODULENAME, ENABLE_ALERTS_KEY, 0)) mir_forkthread(ReadFromFile, (void*)hContact); else mir_forkthread(GetData, (void*)hContact); db_set_w(hContact, MODULENAME, "Status", ID_STATUS_ONLINE); } return 0; }
bool netbios_name::Register() { m_managed = true; UCHAR ret = AddName (); LOG("Register NetBIOS name \"%s\" on lana %d num=%d : 0x%02x \"%s\"", GetANSIFullName(), m_lana, netbiosed.name_num, ret, GetNetbiosError( ret ) ); m_registered = (ret == NRC_GOODRET); m_duplicated = (ret == NRC_DUPNAME); if ( ret != NRC_GOODRET && ret != NRC_DUPNAME ) { WarningBox (NULL, (DWORD)MAKE_HRESULT (0, FACILITY_NETBIOS, ret), _T("%s: %s"), TranslateT ("Cannot register NetBIOS name"), (LPCTSTR)CA2T( GetANSIFullName() ) ); } if (!m_term) m_term = CreateEvent (NULL, TRUE, FALSE, NULL); else ResetEvent (m_term); if ( m_term && !m_listener ) m_listener = (HANDLE)mir_forkthread( ListenerThread, this ); if ( m_term && !m_dgreceiver && // NOTE: Под Win9x нельзя запускать ожидание датаграмм для имён-дубликатов // т.к. потом невозможно выбить управление из функции Netbios() даже если // разрегистрировать имя !m_duplicated ) { m_dgreceiver = (HANDLE)mir_forkthread( DatagramReceiverThread, this ); } return m_registered; }
int Doubleclick(WPARAM wParam, LPARAM lParam) { MCONTACT hContact = wParam; char *szProto = GetContactProto(hContact); if ( lstrcmpA(MODULENAME, szProto)) return 0; int action = db_get_b(hContact, MODULENAME, DBLE_WIN_KEY, 1); if (action == 0) { ptrT url( db_get_tsa(hContact, MODULENAME, "URL")); CallService(MS_UTILS_OPENURL, OUF_TCHAR, (WPARAM)url); db_set_w(hContact, MODULENAME, "Status", ID_STATUS_ONLINE); } else if (action == 1) { HWND hwndDlg = WindowList_Find(hWindowList, hContact); if (hwndDlg) { SetForegroundWindow(hwndDlg); SetFocus(hwndDlg); } else { hwndDlg = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DISPLAY_DATA), NULL, DlgProcDisplayData, (LPARAM) hContact); HWND hTopmost = db_get_b(hContact, MODULENAME, ON_TOP_KEY, 0) ? HWND_TOPMOST : HWND_NOTOPMOST; SendDlgItemMessage(hwndDlg, IDC_STICK_BUTTON, BM_SETIMAGE, IMAGE_ICON, (LPARAM) ((HICON) LoadImage(hInst, MAKEINTRESOURCE(IDI_STICK), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0))); if ( db_get_b(NULL, MODULENAME, SAVE_INDIVID_POS_KEY, 0)) SetWindowPos(hwndDlg, hTopmost, db_get_dw(hContact, MODULENAME, "WVx", 100), // Xposition, db_get_dw(hContact, MODULENAME, "WVy", 100), // Yposition, db_get_dw(hContact, MODULENAME, "WVwidth", 412), // WindowWidth, db_get_dw(hContact, MODULENAME, "WVheight", 350), 0); // WindowHeight, else SetWindowPos(hwndDlg, HWND_TOPMOST, Xposition, Yposition, WindowWidth, WindowHeight, 0); } ShowWindow(hwndDlg, SW_SHOW); SetActiveWindow(hwndDlg); if (db_get_b(NULL, MODULENAME, UPDATE_ON_OPEN_KEY, 0)) { if (db_get_b(hContact, MODULENAME, ENABLE_ALERTS_KEY, 0)) mir_forkthread(ReadFromFile, (void*)hContact); else mir_forkthread(GetData, (void*)hContact); db_set_w(hContact, MODULENAME, "Status", ID_STATUS_ONLINE); } } return 1; }
extern "C" int __declspec(dllexport) Load() { mir_getLP(&g_pluginInfo); g_MsgIDSkypeControlAPIAttach = ::RegisterWindowMessage(_T("SkypeControlAPIAttach")); g_MsgIDSkypeControlAPIDiscover = ::RegisterWindowMessage(_T("SkypeControlAPIDiscover")); if ((0 == g_MsgIDSkypeControlAPIAttach) || (0 == g_MsgIDSkypeControlAPIDiscover)) return 1; WNDCLASS oWindowClass = { 0 }; oWindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; oWindowClass.lpfnWndProc = (WNDPROC)&SkypeAPI_WindowProc; oWindowClass.hInstance = g_hModule; oWindowClass.lpszClassName = g_pszSkypeWndClassName; if (!RegisterClass(&oWindowClass)) return 1; g_wndMainWindow = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, g_pszSkypeWndClassName, _T(""), WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 128, 128, NULL, 0, g_hModule, 0); if (g_wndMainWindow == NULL) return 1; g_bMirandaIsShutdown = false; g_hEventShutdown = ::CreateEvent(NULL, TRUE, FALSE, NULL); g_hThread = mir_forkthread(ThreadFunc, NULL); HookEvent(ME_PROTO_ACK, SSC_OnProtocolAck); HookEvent(ME_SYSTEM_PRESHUTDOWN, SSC_OnPreShutdown); HookEvent(ME_OPT_INITIALISE, SSC_OptInitialise); return 0; }
// returns poll thread id on success DWORD PollCpuUsage(CPUUSAGEAVAILPROC pfnDataAvailProc,LPARAM lParam,DWORD dwDelayMillis) { struct CpuUsageThreadParams *param; DWORD idThread=0; HANDLE hFirstEvent; /* init params */ param=(struct CpuUsageThreadParams*)mir_alloc(sizeof(struct CpuUsageThreadParams)); if (param==NULL) return FALSE; param->dwDelayMillis=dwDelayMillis; param->pfnDataAvailProc=pfnDataAvailProc; param->lParam=lParam; param->pidThread=&idThread; param->hFirstEvent=hFirstEvent=CreateEvent(NULL,FALSE,FALSE,NULL); if (hFirstEvent==NULL) { mir_free(param); return 0; } /* start thread */ if ((int)mir_forkthread(WinNT_PollThread, param) != -1) WaitForSingleObject(hFirstEvent,INFINITE); /* wait for first success */ else mir_free(param); /* thread not started */ CloseHandle(hFirstEvent); return idThread; }
//--------------------------------------------------------------------------- int CSendHTTPServer::Send() { if (!m_hContact) return 1; if (CallService(MS_HTTP_ACCEPT_CONNECTIONS, TRUE, 0) != 0) { Error(LPGENT("Could not start the HTTP Server plugin.")); Exit(ACKRESULT_FAILED); return !m_bAsync; } if (!m_pszFileName) { m_pszFileName = GetFileNameA(m_pszFile); } mir_freeAndNil(m_fsi_pszSrvPath); mir_stradd(m_fsi_pszSrvPath, "/"); mir_stradd(m_fsi_pszSrvPath, m_pszFileName); replaceStr(m_fsi_pszRealPath, _T2A(m_pszFile)); memset(&m_fsi, 0, sizeof(m_fsi)); m_fsi.lStructSize = sizeof(STFileShareInfo); m_fsi.pszSrvPath = m_fsi_pszSrvPath; m_fsi.nMaxDownloads = -1; // -1 = infinite m_fsi.pszRealPath = m_fsi_pszRealPath; //start Send thread mir_forkthread(&CSendHTTPServer::SendThreadWrapper, this); return 0; }
INT_PTR __cdecl CIrcProto::Scripting_InsertGuiOut(WPARAM, LPARAM lParam) { GCHOOK* gch = (GCHOOK*)lParam; if (m_scriptingEnabled && gch) { GCHOOK* gchook = new GCHOOK; gchook->pDest = new GCDEST; gchook->dwData = gch->dwData; gchook->pDest->iType = gch->pDest->iType; if (gch->ptszText) gchook->ptszText = _tcsdup(gch->ptszText); else gchook->ptszText = NULL; if (gch->ptszUID) gchook->ptszUID = _tcsdup(gch->ptszUID); else gchook->ptszUID = NULL; if (gch->pDest->ptszID) { CMString S = MakeWndID(gch->pDest->ptszID); gchook->pDest->ptszID = _tcsdup(S.c_str()); } else gchook->pDest->ptszID = NULL; if (gch->pDest->pszModule) gchook->pDest->pszModule = _strdup(gch->pDest->pszModule); else gchook->pDest->pszModule = NULL; mir_forkthread(GuiOutThread, gchook); return 0; } return 1; }
void InitCacheAsync() { InitializeCriticalSection(>aCS); hgtaWakeupEvent = CreateEvent(NULL, FALSE, FALSE, NULL); g_hGetTextAsyncThread = mir_forkthread(gtaThreadProc, 0); HookEvent(ME_SYSTEM_PRESHUTDOWN, gtaOnModulesUnload); }
BOOL JabberFtHandleBytestreamRequest( XmlNode *iqNode ) { XmlNode *queryNode; TCHAR* sid; JABBER_LIST_ITEM *item; JABBER_BYTE_TRANSFER *jbt; if ( iqNode == NULL ) return FALSE; if (( queryNode=JabberXmlGetChildWithGivenAttrValue( iqNode, "query", "xmlns", _T("http://jabber.org/protocol/bytestreams")))!=NULL && ( sid=JabberXmlGetAttrValue( queryNode, "sid" ))!=NULL && ( item=JabberListGetItemPtr( LIST_FTRECV, sid ))!=NULL ) { // Start Bytestream session jbt = ( JABBER_BYTE_TRANSFER * ) mir_alloc( sizeof( JABBER_BYTE_TRANSFER )); ZeroMemory( jbt, sizeof( JABBER_BYTE_TRANSFER )); jbt->iqNode = JabberXmlCopyNode( iqNode ); jbt->pfnRecv = JabberFtReceive; jbt->pfnFinal = JabberFtReceiveFinal; jbt->userdata = item->ft; item->ft->jbt = jbt; mir_forkthread(( pThreadFunc )JabberByteReceiveThread, jbt ); JabberListRemove( LIST_FTRECV, sid ); return TRUE; } JabberLog( "File transfer invalid bytestream initiation request received" ); return FALSE; }
int QuotesEventFunc_OnModulesLoaded(WPARAM, LPARAM) { CHTTPSession::Init(); g_hEventWorkThreadStop = ::CreateEvent(NULL, TRUE, FALSE, NULL); HookEvent(ME_USERINFO_INITIALISE, QuotesEventFunc_OnUserInfoInit); HookEvent(ME_CLIST_DOUBLECLICKED, Quotes_OnContactDoubleClick); HookEvent(ME_TTB_MODULELOADED, Quotes_OnToolbarLoaded); g_bAutoUpdate = 1 == db_get_b(NULL, QUOTES_MODULE_NAME, DB_STR_AUTO_UPDATE, 1); InitMenu(); BOOL b = ::ResetEvent(g_hEventWorkThreadStop); assert(b && "Failed to reset event"); const CModuleInfo::TQuotesProvidersPtr& pProviders = CModuleInfo::GetQuoteProvidersPtr(); const CQuotesProviders::TQuotesProviders& rapProviders = pProviders->GetProviders(); for (CQuotesProviders::TQuotesProviders::const_iterator i = rapProviders.begin(); i != rapProviders.end(); ++i) { const CQuotesProviders::TQuotesProviderPtr& pProvider = *i; g_ahThreads.push_back(mir_forkthread(WorkingThread, pProvider.get())); } return 0; }
//--------------------------------------------------------------------------- int CSendHost_Imgur::Send() { if (!g_hNetlibUser) { /// check Netlib Error(SS_ERR_INIT, m_pszSendTyp); Exit(ACKRESULT_FAILED); return !m_bAsync; } memset(&m_nlhr, 0, sizeof(m_nlhr)); char* tmp; tmp = mir_t2a(m_pszFile); HTTPFormData frm[] = { { "Authorization", HTTPFORM_HEADER("Client-ID 2a7303d78abe041") }, { "image", HTTPFORM_FILE(tmp) }, // {"name",""},// filename (detected if multipart / form-data) // {"title",""}, // {"description",""}, }; int error = HTTPFormCreate(&m_nlhr, REQUEST_POST, "https://api.imgur.com/3/image", frm, sizeof(frm) / sizeof(HTTPFormData)); mir_free(tmp); if (error) return !m_bAsync; /// start upload thread if (m_bAsync) { mir_forkthread(&CSendHost_Imgur::SendThread, this); return 0; } SendThread(this); return 1; }
int StartServer() { int failure = 1; if (sdCmdLine) { if (sdCmdLine->instances == 0) { HANDLE server = mir_forkthread(ServerWorkerThread); if (server) { wchar_t path[MIMFOLDER_SIZE]; GetModuleFileNameW(GetModuleHandle(nullptr), path, _countof(path)); wchar_t *p = wcsrchr(path, '\\'); if (p) *p = 0; wcsncpy_s(sdCmdLine->mimFolder, path, _TRUNCATE); sdCmdLine->instances++; failure = 0; } else PUShowMessageT(TranslateT("Could not create CommandLine listening server!"), SM_WARNING); } else MessageBox(nullptr, TranslateT("You can only run one instance of CmdLine plugin."), TranslateT("Error"), MB_ICONERROR | MB_OK); } return failure; }
void InitCacheAsync() { InitializeCriticalSection(>aCS); hgtaWakeupEvent=CreateEvent(NULL,FALSE,FALSE,NULL); g_dwGetTextAsyncThreadID=(DWORD)mir_forkthread((pThreadFunc)gtaThreadProc,0); ModernHookEvent(ME_SYSTEM_PRESHUTDOWN, gtaOnModulesUnload); }
INT_PTR ShakeChat(WPARAM wParam, LPARAM lParam) { if (((HANDLE)wParam) == NULL) return -1; //char srmmName[100]; MessageWindowData mwd; MessageWindowInputData mwid; mwd.cbSize = sizeof(MessageWindowData); mwd.hContact = db_mc_tryMeta(wParam); mwd.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH; mwid.cbSize = sizeof(MessageWindowInputData); mwid.hContact = mwd.hContact; mwid.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH; CallService(MS_MSG_GETWINDOWDATA, (WPARAM)&mwid, (LPARAM)&mwd); //CallService(MS_MSG_GETWINDOWCLASS,(WPARAM)srmmName,(LPARAM)100 ); HWND parent; HWND hWnd = mwd.hwndWindow; while ((parent = GetParent(hWnd)) != 0) hWnd = parent; // ensure we have the top level window (need parent window for scriver & tabsrmm) mir_forkthread(ShakeChatWindow, (void*)hWnd); return 0; }
void ScheduleThread(void*) { time_t waitTime = INFINITE; while (true) { wait: WaitForSingleObject(hScheduleEvent, waitTime); while (ScheduleTask *task = tasks[0]) { if (Miranda_Terminated()) return; mir_cslock lock(threadLock); time_t timestamp = time(NULL); if (task->timestamp > timestamp) { waitTime = (task->timestamp - timestamp - 1) * 1000; goto wait; } tasks.remove(task); mir_forkthread(ExecuteTaskThread, task); } waitTime = INFINITE; } }
void InvokeThreadServer() { HANDLE hMainThread = 0; DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, false, 0); if (hMainThread != 0) mir_forkthread(&ThreadServer, hMainThread); }
int OpenAvatarDialog(MCONTACT hContact, char* fn) { HWND hAvatarWindow = WindowList_Find(hAvatarWindowsList, hContact); if (hAvatarWindow) { SetForegroundWindow(hAvatarWindow); SetFocus(hAvatarWindow); return 0; } struct AvatarDialogData *avdlg = (struct AvatarDialogData*)malloc(sizeof(struct AvatarDialogData)); memset(avdlg, 0, sizeof(struct AvatarDialogData)); avdlg->hContact = hContact; if (fn == NULL) { avdlg->fn[0] = _T('\0'); } else { MultiByteToWideChar(CP_ACP, 0, fn, -1, avdlg->fn, _countof(avdlg->fn)); } CloseHandle(mir_forkthread(AvatarDialogThread, (void*)avdlg)); return 0; }
//************************************************************************ // Constructor //************************************************************************ CLCDConnectionLogitech::CLCDConnectionLogitech() { m_iNumQVGADevices = 0; m_iNumBWDevices = 0; m_pDrawingBuffer = NULL; m_pConnectedDevice = NULL; m_hKeyboardHook = NULL; m_bVolumeWheelHook = false; m_dwButtonState = 0; m_bConnected = false; m_bSetAsForeground = false; m_dwForegroundCheck = 0; m_hHIDDeviceHandle = NULL; m_hConnection = LGLCD_INVALID_CONNECTION; m_hDevice = LGLCD_INVALID_DEVICE; m_bIsForeground = false; m_hDrawEvent = NULL; m_hStopEvent = NULL; CLCDConnectionLogitech::m_pInstance = this; m_hDrawingThread = mir_forkthread(initializeDrawingThread, (void*)this); }
static int ModulesLoaded(WPARAM, LPARAM) { TCHAR eventPrefix[MAX_PATH + 1], eventName[MAX_PATH + 1]; createProtocolList(); LoadSettings(); // Create some synchronisation objects createEventPrefix(eventPrefix, MAX_PATH - 11); mir_sntprintf(eventName, _T("%s/FlashEvent"), eventPrefix); hFlashEvent = CreateEvent(NULL, FALSE, FALSE, eventName); mir_sntprintf(eventName, _T("%s/ExitEvent"), eventPrefix); hExitEvent = CreateEvent(NULL, FALSE, FALSE, eventName); hThread = mir_forkthread(FlashThreadFunction, 0); HookEvent(ME_MC_ENABLED, OnMetaChanged); HookEvent(ME_DB_EVENT_ADDED, PluginMessageEventHook); HookEvent(ME_OPT_INITIALISE, InitializeOptions); CreateServiceFunction(MS_KBDNOTIFY_ENABLE, EnableService); CreateServiceFunction(MS_KBDNOTIFY_DISABLE, DisableService); CreateServiceFunction(MS_KBDNOTIFY_STARTBLINK, StartBlinkService); CreateServiceFunction(MS_KBDNOTIFY_EVENTSOPENED, EventsWereOpenedService); CreateServiceFunction(MS_KBDNOTIFY_FLASHINGACTIVE, IsFlashingActiveService); CreateServiceFunction(MS_KBDNOTIFY_NORMALSEQUENCE, NormalizeSequenceService); return 0; }
void ShowInfoMessage(BYTE flags, const char *pszTitle, const char *pszTextFmt, ...) { va_list va; va_start(va, pszTextFmt); char szText[256]; /* max for systray */ mir_vsnprintf(szText, SIZEOF(szText), pszTextFmt, va); va_end(va); if (ServiceExists(MS_CLIST_SYSTRAY_NOTIFY)) { MIRANDASYSTRAYNOTIFY msn; msn.cbSize = sizeof(msn); msn.szProto = NULL; msn.szInfoTitle = (char*)pszTitle; msn.szInfo = (char*)szText; msn.uTimeout = 30000; /* max timeout */ msn.dwInfoFlags = flags; if (!CallServiceSync(MS_CLIST_SYSTRAY_NOTIFY, 0, (LPARAM)&msn)) return; /* success */ } MSGBOXPARAMSA *mbp = (MSGBOXPARAMSA*)mir_calloc(sizeof(*mbp)); if (mbp == NULL) return; mbp->cbSize = sizeof(*mbp); mbp->lpszCaption = mir_strdup(pszTitle); mbp->lpszText = mir_strdup(szText); mbp->dwStyle = MB_OK|MB_SETFOREGROUND|MB_TASKMODAL; mbp->dwLanguageId = LANGIDFROMLCID((LCID)CallService(MS_LANGPACK_GETLOCALE, 0, 0)); switch(flags&NIIF_ICON_MASK) { case NIIF_INFO: mbp->dwStyle |= MB_ICONINFORMATION; break; case NIIF_WARNING: mbp->dwStyle |= MB_ICONWARNING; break; case NIIF_ERROR: mbp->dwStyle |= MB_ICONERROR; } mir_forkthread(( pThreadFunc )MessageBoxIndirectFree, mbp); }
INT_PTR PluginMenuCommand(WPARAM hContact, LPARAM) { if (!optionWindowIsOpen) mir_forkthread(Check_ThreadFunc, GetAccountByContact(hContact)); return 0; }
void StartBlinkAction(char *flashSequence, WORD eventMaxSeconds) { if (eventMaxSeconds) mir_forkthread(ForceEventsWereOpenedThread, (void *)eventMaxSeconds); CallService(MS_KBDNOTIFY_STARTBLINK, 1, (LPARAM)flashSequence); }
static void __stdcall LaunchDialog(void *param) { if (opts.bSilentMode && opts.bSilent) mir_forkthread(DlgUpdateSilent, param); else hwndDialog = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_UPDATE), GetDesktopWindow(), DlgUpdate, (LPARAM)param); }
// Init AniAva module int AniAva_InitModule() { memset(&AniAva,0,sizeof(AniAva)); if (g_CluiData.fGDIPlusFail) return 0; if (!( ModernGetSettingByte(NULL,"CList","AvatarsAnimated",(ServiceExists(MS_AV_GETAVATARBITMAP)&&!g_CluiData.fGDIPlusFail)) && ModernGetSettingByte(NULL,"CList","AvatarsShow",SETTINGS_SHOWAVATARS_DEFAULT) ) ) return 0; { WNDCLASSEX wc; ZeroMemory(&wc, sizeof(wc)); wc.cbSize = sizeof(wc); wc.lpszClassName = ANIAVAWINDOWCLASS; wc.lpfnWndProc = _AniAva_WndProc; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.cbWndExtra = sizeof(ANIAVA_WINDOWINFO*); wc.hbrBackground = 0; wc.style = CS_GLOBALCLASS; RegisterClassEx(&wc); } InitializeCriticalSection(&AniAva.CS); AniAva.Objects=li.List_Create(0,2); AniAva.AniAvatarList=li.List_Create(0,1); AniAva.AniAvatarList->sortFunc=_AniAva_SortAvatarInfo; AniAva.bModuleStarted=TRUE; AniAva.hExitEvent=CreateEvent(NULL,FALSE,FALSE,NULL); AniAva.AnimationThreadID=(DWORD)mir_forkthread(_AniAva_AnimationTreadProc, (void*)AniAva.hExitEvent); ModernHookEvent(ME_SYSTEM_PRESHUTDOWN, _AniAva_OnModulesUnload); _AniAva_LoadOptions(); return 1; }
int ModulesLoaded(WPARAM, LPARAM) { HookEvent(ME_OPT_INITIALISE, OptInitialise); hHookDisplayDataAlert = CreateHookableEvent(ME_DISPLAYDATA_ALERT); HookEvent(ME_DISPLAYDATA_ALERT, DataWndAlertCommand); hHookAlertPopup = CreateHookableEvent(ME_POPUP_ALERT); HookEvent(ME_POPUP_ALERT, PopupAlert); hHookErrorPopup = CreateHookableEvent(ME_POPUP_ERROR); HookEvent(ME_POPUP_ERROR, ErrorMsgs); hHookAlertOSD = CreateHookableEvent(ME_OSD_ALERT); HookEvent(ME_OSD_ALERT, OSDAlert); FontSettings(); h_font = CreateFontIndirect(&lf); // get data on startup if ( db_get_b(NULL, MODULENAME, UPDATE_ONSTART_KEY, 0)) mir_forkthread(StartUpdate, NULL); return 0; }
INT_PTR CheckFeed(WPARAM hContact, LPARAM) { if(IsMyContact(hContact)) UpdateListAdd(hContact); if ( !ThreadRunning) mir_forkthread(UpdateThreadProc, FALSE); return 0; }
void ConnectionOpen(HANDLE hNewConnection, DWORD dwRemoteIP) { in_addr stAddr; stAddr.S_un.S_addr = htonl(dwRemoteIP); CLHttpUser *pclUser = new CLHttpUser(hNewConnection, stAddr); mir_forkthread(HandleNewConnection, pclUser); }
void InitPolls() { waitTime = REQUEST_WAIT_TIME; InitializeCriticalSection(&cs); // Init request queue mir_forkthread(RequestThread, NULL); }
// can't do this on unload, since other plugins will be have already been unloaded, but their hooks // for setting changed event not cleared. the backup on exit function will write to the db, calling those hooks. int PreShutdown(WPARAM, LPARAM) { if (options.backup_types & BT_EXIT) { options.disable_popups = 1; // Don't try to show popups on exit mir_forkthread(BackupThread, NULL); } return 0; }
void previewFlashing(BOOL buttonState) { bPreview = buttonState; if (!bPreview || bPreviewSemaphore) // turn off flashing or already running return; bPreviewSemaphore = TRUE; mir_forkthread(PreviewThread, 0); }