|
ちょっとマクロを作るつもりが、かなりはまってしまいました。
一応以下のマクロで添付ファイルも含めた合体が実現できます。
----------------eml添付ファイル合体.mac------------------------
loaddll "tkinfo.dll";
if( ! dllfunc("IsTuruKameMain") ) {
message "鶴亀メール本体ウィンドウで実行してください。";
endmacro;
}
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
$homedir = getregstr( "HomeDir" );
closereg;
$accountdir = $homedir + dllfuncstr("CurrentAccount") + "\\";
$path = $accountdir + dllfuncstr("CurrentHeader", "X-Attach");
if( rightstr( $path, 4 ) != ".eml" ) {
message ".eml添付ファイルじゃありません。";
endmacro;
}
runsync2 "turukame.exe /v \"" + $path + "\"";
#handle = findwindowclass("TuruKameOuterView");
setactivehidemaru #handle;
#headerview = dllfunc("HeaderView");
#n = dllfunc("SwitchHeaderView", 1);
gofileend;
beginsel;
moveto 0, -9999;
setclipboard "\n\n--------------転送されたメール---------------\n";
appendcopy;
// さらに添付ファイルを取り出してコピーする処理!
call GetBaseName $path;
$destfolder = leftstr( $path, strlen($path) - strlen($$return) );
$destfolderbase = rightstr( $destfolder
, strlen($destfolder) - strlen($accountdir) );
#cAttach = dllfunc("CountCurrentHeader", "X-Attach");
#i = 0;
while( #i < #cAttach ) {
$attach[#i] = dllfuncstr("CurrentHeader2", "X-Attach", #i);
call GetBaseName $attach[#i];
$attachbase[#i] = $$return;
if( rightstr( winsysdir, 2 ) == "32" ) {
$cmd = "cmd.exe";
} else {
$cmd = "command.com";
}
$cmd = $cmd + " /c copy \"" + $homedir
+ dllfuncstr("CurrentAccount") + "\\" + $attach[#i]
+ "\" \"" + $destfolder + $attachbase[#i] + "\"";
message $cmd;
runsync2 $cmd;
#i = #i + 1;
}
#n = dllfunc("SwitchHeaderView", #headerview);
#n = dllfunc("SetMainWndTop");
#n = dllfunc("OpenMail");
#n = dllfunc("EnableEdit");
gofileend;
paste;
#i = 0;
#n = dllfunc("SwitchHeaderView", 0);
while( #i < #cAttach ) {
#n = dllfunc("AddHeader", "X-Attach"
, $destfolderbase + $attachbase[#i] );
#i = #i + 1;
}
#n = dllfunc("SwitchHeaderView", #headerview);
#n = dllfunc("Bypass_PostMessage", #handle, 0x0010, 0 );
save;
message ".eml添付ファイルの中身を合体させました。";
endmacro;
GetBaseName:
while(1) {
##n = strstr( $$1, "\\" );
if( ##n < 0 ) break;
$$1 = midstr( $$1, ##n + 1, 256 );
}
return $$1;
------------------------マクロ終わり
■補足説明その1
eml添付ファイルを開くには、runsync2でturukame.exe /v起動すればいいです
が、実はこれだと起動されたエディタにマクロ実行が切り替わってくれないです。
いろいろ試行錯誤して上記マクロのようにマクロ実行を切り替えることに成功し
ました。
■補足説明その2
turukame.exe /vで起動したエディタをclosehidemaruforcedで終了させようと
すると鶴亀メールが固まってしまいました。一応バグといえばバグですが、とり
あえず今回のマクロではWM_CLOSEをPostMessageすることで対処しました。
■補足説明その3
Windows98系かWindowsNT系かの判断は、winsysdirがsystemかsystem32かで判
断するようにしました。今までこの判断が出来ずに苦労してたような気がします。
(っといいつつ、Windows95系ではテストしてませんが)
|
|