|
かわしたです。
結局最初にエクスポートしてテキストファイルとして処理するほう
が速そうだったので、そちらの手法でマクロを組んでみました。前
回のメールでは「マクロを実行するウィンドウを切り替える必要が
…」などと書きましたが、その必要もありませんでした。
TaskPrize側にどんな内容を渡せばよいのかは全く調べていないの
で、ぱとさんのこれまでのマクロをまねさせてもらっています。
あまり時間が割けなかったのでエラー処理を全くしていないし、ヘ
ッダの抽出処理の部分などにまだまだ修正の余地がありますがとり
あえず雛形程度にはなるのではないでしょうか。
-- ここから
loaddll "tkinfo.dll";
//出力するファイル名
$ExportFile=dllfuncstr("HomeDir")+"hoge.txt";
//エクスポート
if(dllfunc("MailType")!=-1){
#n=dllfunc("Export",$ExportFile,"turukame","noencode");
}
else endmacro;
//テキストファイルとして開く
#n=dllfunc("NewMail");
#n=dllfunc("SwitchHeaderView", 0);
gofiletop;
beginsel;
gofileend;
delete;
insertfile $ExportFile;
//メールの区切りをピリオドに変更
gofiletop;
beginsel;
down;
delete;
gofiletop;
replaceallfast "^[\.]", "..", regular;
gofiletop;
replaceallfast "\x0C! ", ".";
gofiletop;
//ウィンドウハンドルの取得
#handle=hidemaruhandle(0);
#main=dllfunc("MainWnd");
disableerrormsg;
//メインループ
M_Loop:
//ヘッダ領域の確定
#hs=y;
searchdown "^\n",regular;
#he=y;
//ヘッダ情報の取得
call CurrentHeader "Message-Id";
$Mid=$$return;
call CurrentHeader "Date";
$Date=$$return;
call CurrentHeader "From";
$From=$$return;
call CurrentHeader "Subject";
$Subj=$$return;
//本体側情報の取得
$sfp="(\""+$Mid+"\",target=\"Message-Id:\"),inmail=0";
#n=dllfunc("ExecAt",#main,"SetFindPack",$sfp);
if(!dllfunc("ExecAt",#main,"FindDown")) #n=dllfunc("ExecAt",#main,"FindU
p");
if(result){
$Mfn=dllfuncstr("ExecAt",#main,"MailFileName");
//#Mfo=dllfunc("ExecAt",#main,"MailFileOffset");
}
else{
$Mfn="";
//$Mfo="";
}
//書き込み
moveto 0,#he+1;
insert "==Header Information for TPZ==\n";
insert " |MailFileName:" + $Mfn + "\n";
insert " |Date :" + $Date+ "\n";
insert " |From :" + $From+ "\n";
insert " |Subject :" + $Subj+ "\n";
insert " |Message-ID :" + $Mid + "\n";
insert "==============================\n\n";
searchdown "^[\.]",regular;
if(result){
down;
goto M_Loop;
}
//保存して終了
enableerrormsg;
saveas $ExportFile;
#n=dllfunc("SetMainWndTop");
closehidemaru #handle;
freedll;
endmacro;
//ヘッダ内容の取得サブルーチン
CurrentHeader:
moveto 0,#hs;
searchdown2 "^"+$$1+":", regular;
if(result && y<#he){
golineend;
$$ch=gettext(strlen($$1)+2,y,x,y);
}
else $$ch="";
return $$ch;
|
|