www.pudn.com > FindMail.zip > Util.cpp
#include "stdafx.h" #include#include "resource.h" CRITICAL_SECTION g_cs_WriteLog, g_cs_WriteStat, g_cs_WriteExistEmail, g_cs_WriteNonexistEmail; int g_f_all_cs_inited =0, g_f_all_cs_deleted =0; void InitAllUtilCS() { if(g_f_all_cs_inited) return; InitializeCriticalSection(&g_cs_WriteLog); InitializeCriticalSection(&g_cs_WriteStat); InitializeCriticalSection(&g_cs_WriteExistEmail); InitializeCriticalSection(&g_cs_WriteNonexistEmail); g_f_all_cs_inited =true; g_f_all_cs_deleted =false; } void DeleteAllUtilCS() { if(g_f_all_cs_deleted || !g_f_all_cs_inited) return; DeleteCriticalSection(&g_cs_WriteLog); DeleteCriticalSection(&g_cs_WriteStat); DeleteCriticalSection(&g_cs_WriteExistEmail); DeleteCriticalSection(&g_cs_WriteNonexistEmail); g_f_all_cs_deleted =true; g_f_all_cs_inited =false; } /*class CUtilInit { public: CUtilInit() { InitAllUtilCS(); } ~CUtilInit() { DeleteAllUtilCS(); } }; CUtilInit g_util_init; */ HWND g_hWndNotify =NULL; int g_show_stat =true; int WriteStat(char *format, ...) { if(!g_show_stat) return 0; if(g_hWndNotify ==NULL) return 0; if(g_f_all_cs_inited) EnterCriticalSection(&g_cs_WriteStat); va_list args; char temp[4096]; va_start(args, format); int len =vsprintf(temp, format, args); va_end(args); temp[len] =0; CString str; CWnd *pdlg =CWnd::FromHandle(g_hWndNotify); pdlg->GetDlgItemText(IDE_STAT, str); if(str.GetLength() >30000) str =""; str +=*(new CString(temp))+"\r\n"; pdlg->SetDlgItemText(IDE_STAT, str); pdlg->SendDlgItemMessage(IDE_STAT, WM_VSCROLL, SB_BOTTOM, 0L); if(g_f_all_cs_inited) LeaveCriticalSection(&g_cs_WriteStat); return 0; } int WriteError(char *format, ...) { if(g_hWndNotify ==NULL) return 0; if(g_f_all_cs_inited) EnterCriticalSection(&g_cs_WriteStat); va_list args; char temp[4096]; va_start(args, format); int len =vsprintf(temp, format, args); va_end(args); temp[len] =0; CString str; CWnd *pdlg =CWnd::FromHandle(g_hWndNotify); pdlg->GetDlgItemText(IDE_STAT, str); if(str.GetLength() >30000) str =""; str +=*(new CString(temp))+"\r\n"; pdlg->SetDlgItemText(IDE_STAT, str); pdlg->SendDlgItemMessage(IDE_STAT, WM_VSCROLL, SB_BOTTOM, 0L); if(g_f_all_cs_inited) LeaveCriticalSection(&g_cs_WriteStat); return 0; } void WriteLog(char *fmt,...) { if(!g_show_stat) return; FILE *fp; va_list args; char modname[128]; if(g_f_all_cs_inited) EnterCriticalSection(&g_cs_WriteLog); if((fp =fopen("c:\\findmail.log", "a")) !=NULL) { va_start(args,fmt); GetModuleFileName(NULL, modname, sizeof(modname)); //fprintf(fp, "\n%s:\n", modname); vfprintf(fp, fmt, args); fprintf(fp, "\n"); fclose(fp); va_end(args); } if(g_f_all_cs_inited) LeaveCriticalSection(&g_cs_WriteLog); } // output exist email to file and the edit control int WriteExistEmail(char *outfile, char *addr) { static int count =0; if(g_f_all_cs_inited) EnterCriticalSection(&g_cs_WriteExistEmail); FILE *fp; if((fp =fopen(outfile, "a")) !=NULL) { fprintf(fp, "%s\r\n", addr); fclose(fp); } else return -1; CString str; CWnd *pdlg =CWnd::FromHandle(g_hWndNotify); pdlg->GetDlgItemText(IDE_EMAIL_EXIST, str); if(str.GetLength() >30000) str =""; str +=*(new CString(addr))+"\r\n"; pdlg->SetDlgItemText(IDE_EMAIL_EXIST, str); pdlg->SendDlgItemMessage(IDE_EMAIL_EXIST, WM_VSCROLL, SB_BOTTOM, 0L); SetDlgItemInt(g_hWndNotify, IDC_EXIST_COUNT, ++count, 0); if(g_f_all_cs_inited) LeaveCriticalSection(&g_cs_WriteExistEmail); return 0; } // output nonexist email to file and the edit control int g_show_nonexist =true; int WriteNonexistEmail(char *outfile, char *addr) { if(!g_show_nonexist) return 0; static int count =0; if(g_f_all_cs_inited) EnterCriticalSection(&g_cs_WriteNonexistEmail); FILE *fp; if((fp =fopen(outfile, "a")) !=NULL) { fprintf(fp, "%s\r\n", addr); fclose(fp); } else return -1; CString str; CWnd *pdlg =CWnd::FromHandle(g_hWndNotify); pdlg->GetDlgItemText(IDE_EMAIL_NONEXIST, str); if(str.GetLength() >30000) str =""; str +=*(new CString(addr))+"\r\n"; pdlg->SetDlgItemText(IDE_EMAIL_NONEXIST, str); pdlg->SendDlgItemMessage(IDE_EMAIL_NONEXIST, WM_VSCROLL, SB_BOTTOM, 0L); SetDlgItemInt(g_hWndNotify, IDC_NONEXIST_COUNT, ++count, 0); if(g_f_all_cs_inited) LeaveCriticalSection(&g_cs_WriteNonexistEmail); return 0; } void WriteBinData(char *buf, int len) { FILE *fp; if((fp =fopen("c:\\findmail.log", "a")) !=NULL) { for(int i =0; i