FILE* INI; void WINAPI CmdProc(HWND, LPARAM) { regex_t re,reh; regmatch_t pmatch[10],pmatchh[2]; int status, SO, EO; char szMailID[256]; char pattern[81],HitFLAG; int linkNo,n,MailNo=-1; char httpaddr[160],m=0,l; char lpszMimeType[20]; char *lpFolderID,*lp, *lps; regcomp(&reh, "http[^ ]* ", REG_EXTENDED|REG_NEWLINE); if(INI!=NULL){ fseek(INI,0,SEEK_SET); lpFolderID=(char*)bka.GetCurrentFolder(); lpFolderID=(char*)bka.GetFolderDisplayName(lpFolderID); for(n=0,l=0;n<80;n++){ if(lpFolderID[n]=='/') l=n+1; } lp=bka.EUC_JP(&lpFolderID[l],TRUE); /* FILE* mojicode; mojicode=fopen("c:/mojicode.txt","w"); for(n=0,m=lp[0];(n<65536)&&(m!=0);m=lp[++n]){ fputc(m,mojicode); } fclose(mojicode); */ for(;!feof(INI);){ m=fgetc(INI);//\nを飛ばす for(n=0;((m=fgetc(INI))==lp[n])&&(m!=EOF);n++); if((m=='\n')&&(lp[n]==0)){//フォルダ名が一致 //フォルダ名が長さ0の文字列と言うことは無いので空行とは一致しない HitFLAG=0x01; for(;!feof(INI);){//各行についてマッチを行う // if(HitFLAG & 0x04) break;//次の行が空行なら終わり for(n=0;((m=fgetc(INI))!='\n')&&(m!=EOF);n++) pattern[n]=m; if(n==0) break;//空行を無視 // if((m=fgetc(INI))=='\n') HitFLAG|=0x04;//次の行が空行なら終わりフラグ pattern[n]=0; regcomp(&re, &pattern[1], REG_EXTENDED|REG_NEWLINE|REG_NOTBOL);//);// MailNo=-1; MailNo=bka.GetNextMail(MailNo,szMailID,256,FALSE); //以下、特定の行に対して全メールのマッチを行う for(;MailNo!=-1;MailNo=bka.GetNextMail(MailNo,szMailID,256,FALSE)){ bka.SetCurrentMail(szMailID); n=bka.GetStatus(szMailID); if(!(n & MESSAGE_READ)){ lps= bka.GetText(lpszMimeType, 19); lp= bka.EUC_JP(lps,TRUE); HitFLAG&=0x05; for(linkNo=0,EO=0;linkNo<10;linkNo++){ regexec(&re,&lp[EO], 2, pmatch, 0); SO=pmatch[0].rm_so; n=SO+EO;//EO:前回の終了時オフセット EO=pmatch[0].rm_eo; if((SO!=-1)&&(EO!=-1)){ // HitFLAG=1; for(m=0;(SO