#include "commonheaders.h" HINSTANCE g_hInst, g_hIconInst; LPCSTR szModuleName = MODULENAME; LPCSTR szVersionStr = MODULENAME" DLL ("__VERSION_STRING")"; char TEMP[MAX_PATH]; int TEMP_SIZE = 0; HANDLE g_hEvent[2], g_hMenu[15], g_hCLIcon=0, g_hFolders=0; HANDLE *g_hService=NULL; HANDLE *g_hHook=NULL; int iService=0; int iHook=0; HICON g_hICO[ICO_CNT], g_hPOP[POP_CNT], g_hIEC[1+IEC_CNT*MODE_CNT] = {0}; IconExtraColumn g_IEC[1+IEC_CNT*MODE_CNT]; int iBmpDepth; BOOL bCoreUnicode = false, bMetaContacts = false, bPopupExists = false, bPopupUnicode = false; BOOL bPGPloaded = false, bPGPkeyrings = false, bUseKeyrings = false, bPGPprivkey = false; BOOL bGPGloaded = false, bGPGkeyrings = false, bSavePass = false; BOOL bSFT, bSOM, bASI, bMCD, bSCM, bDGP, bAIP, bNOL, bAAK, bMCM; BYTE bADV, bPGP, bGPG; DWORD iCoreVersion = 0; CRITICAL_SECTION localQueueMutex; PLUGININFOEX pluginInfoEx = { sizeof(PLUGININFOEX), MODULENAME, __VERSION_DWORD, MODULENAME" plugin for Miranda IM ("__DATE__")", "Johell, Ghost, Nightwish, __alex, Baloo", "Johell@ifrance.com, baloo@bk.ru", "© 2003 Johell, © 2005-09 Baloo", "http://miranda-ng.org/", 0, MIID_SECUREIM }; LPSTR myDBGetString(HANDLE hContact,const char *szModule,const char *szSetting) { char *val=NULL; DBVARIANT dbv; dbv.type = DBVT_ASCIIZ; DBGetContactSetting(hContact,szModule,szSetting,&dbv); if ( dbv.pszVal && (dbv.type==DBVT_ASCIIZ || dbv.type==DBVT_UTF8 || dbv.type==DBVT_WCHAR)) val = mir_strdup(dbv.pszVal); DBFreeVariant(&dbv); return val; } LPSTR myDBGetStringDecode(HANDLE hContact,const char *szModule,const char *szSetting) { char *val = myDBGetString(hContact,szModule,szSetting); if (!val) return NULL; size_t len = strlen(val)+64; char *buf = (LPSTR)mir_alloc(len); strncpy(buf,val,len); mir_free(val); CallService(MS_DB_CRYPT_DECODESTRING,(WPARAM)len,(LPARAM)buf); return buf; } int myDBWriteStringEncode(HANDLE hContact,const char *szModule,const char *szSetting,const char *val) { int len = (int)strlen(val)+64; char *buf = (LPSTR)alloca(len); strncpy(buf,val,len); CallService(MS_DB_CRYPT_ENCODESTRING,(WPARAM)len,(LPARAM)buf); int ret = DBWriteContactSettingString(hContact,szModule,szSetting,buf); return ret; } void GetFlags() { bSFT = DBGetContactSettingByte(0,szModuleName,"sft",0); bSOM = DBGetContactSettingByte(0,szModuleName,"som",0); bASI = DBGetContactSettingByte(0,szModuleName,"asi",0); bMCD = DBGetContactSettingByte(0,szModuleName,"mcd",0); bSCM = DBGetContactSettingByte(0,szModuleName,"scm",0); bDGP = DBGetContactSettingByte(0,szModuleName,"dgp",0); bAIP = DBGetContactSettingByte(0,szModuleName,"aip",0); bADV = DBGetContactSettingByte(0,szModuleName,"adv",0); bNOL = DBGetContactSettingByte(0,szModuleName,"nol",0); bAAK = DBGetContactSettingByte(0,szModuleName,"aak",0); bMCM = DBGetContactSettingByte(0,szModuleName,"mcm",0); } void SetFlags() { DBWriteContactSettingByte(0,szModuleName,"sft",bSFT); DBWriteContactSettingByte(0,szModuleName,"som",bSOM); DBWriteContactSettingByte(0,szModuleName,"asi",bASI); DBWriteContactSettingByte(0,szModuleName,"mcd",bMCD); DBWriteContactSettingByte(0,szModuleName,"scm",bSCM); DBWriteContactSettingByte(0,szModuleName,"dgp",bDGP); DBWriteContactSettingByte(0,szModuleName,"aip",bAIP); DBWriteContactSettingByte(0,szModuleName,"adv",bADV); DBWriteContactSettingByte(0,szModuleName,"nol",bNOL); DBWriteContactSettingByte(0,szModuleName,"aak",bAAK); DBWriteContactSettingByte(0,szModuleName,"mcm",bMCM); } struct A2U { LPSTR a; LPSTR u; }; typedef A2U* pA2U; pA2U pa2u; int ca2u=0; LPSTR TranslateU( LPCSTR lpText ) { int i; for(i=0;iutf8encode(lpwTran)); } else { LPSTR lpTran = Translate(lpText); LPWSTR lpwTran = mir_a2u(lpTran); lpTran = exp->utf8encode(lpwTran); mir_free(lpwTran); pa2u[i].u = mir_strdup(lpTran); } return pa2u[i].u; } int msgbox( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) { if ( bCoreUnicode ) { LPWSTR lpwText = mir_a2u(lpText); LPWSTR lpwCaption = mir_a2u(lpCaption); int r = MessageBoxW(hWnd,TranslateW(lpwText),TranslateW(lpwCaption),uType); mir_free(lpwCaption); mir_free(lpwText); return r; } return MessageBoxA(hWnd,Translate(lpText),Translate(lpCaption),uType); } void CopyToClipboard(HWND hwnd,LPSTR msg) { HGLOBAL hglbCopy; LPSTR lpstrCopy; hglbCopy = GlobalAlloc(GMEM_MOVEABLE, lstrlenA(msg)+1); lpstrCopy = (LPSTR)GlobalLock(hglbCopy); lstrcpyA(lpstrCopy, msg); GlobalUnlock(hglbCopy); OpenClipboard(NULL); EmptyClipboard(); SetClipboardData(CF_TEXT, hglbCopy); CloseClipboard(); } #if defined(_DEBUG) || defined(NETLIB_LOG) HANDLE hNetlibUser; void InitNetlib() { NETLIBUSER nl_user; memset(&nl_user,0,sizeof(nl_user)); nl_user.cbSize = sizeof(nl_user); nl_user.szSettingsModule = (LPSTR)szModuleName; nl_user.szDescriptiveName = (LPSTR)szModuleName; nl_user.flags = NUF_NOOPTIONS; hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nl_user); } void DeinitNetlib() { if(hNetlibUser) CallService(MS_NETLIB_CLOSEHANDLE, (WPARAM)hNetlibUser, 0); } int Sent_NetLog(const char *fmt,...) { va_list va; char szText[1024]; va_start(va,fmt); mir_vsnprintf(szText,sizeof(szText),fmt,va); va_end(va); return CallService(MS_NETLIB_LOG,(WPARAM)hNetlibUser,(LPARAM)szText); } #endif // EOF