|
ちょっとややこしい話が絡んでくるのでその辺説明させていただきます。
turukame.exeをコマンドライン付きで起動する場合、その起動よりも前にすで
に秀丸メールが起動されているかどうかで、動作が変わります。
すでに秀丸メールが起動してて画面上に存在してる状態で、例えば
「/x RECVSEND.mac」のコマンドラインでturukame.exeを起動すると、起動され
たturukame.exeは、すでに起動してる方のturukame.exeに対して「RECVSEND.
mac」を実行せよ」と指示し、指示が終わったらturukame.exeのプロセスは終了
します。
秀丸メールがまだ起動してない状態で「/x RECVSEND.mac」のコマンドライン
付きturukame.exeが起動すると、起動されたturukame.exeは普通にウィンドウを
表示する処理をしてからマクロを実行し、そのまま居座り続けます。ユーザーさ
んがウィンドウを閉じる操作をしない限り、turukame.exeのプロセスも終了しま
せん。
ちょっと図解説明でないと難しいですけども。
今回の、のーすさんの所で起きてる現象は、後者の話になると思います。つま
り、RECVSEND.macを実行したあとturukame.exeのプロセスがそのまま残るために、
バッチファイルの後の処理も実行されず、そのまま止まってしまうのだと思いま
す。
これの解決策としては、バッチファイルでturukame.exeを起動するのはstart
コマンドを使い、さらに、受信と送信の両方ともマクロでやってしまうしか無い
と思います。
バッチファイルとしては、
start "tk" "D:\Program Files\HidemaruMail\TuruKame.exe" /x RCVSEND.mac
のようにstartコマンドで秀丸メールを起動するようにしつつ、マクロの方で
は、例えば「送信して受信」なら、
loaddll "TKInfo.dll";
if( dllfunc( "IsTransmitting" ) ) {
message "送受信できません。";
endmacro;
}
#n = dllfunc("Receive");
#n = dllfunc("NewMail");
#n = dllfunc("SetHeader", "To", "xxx@xxx.jp");
#n = dllfunc("SetHeader", "Subject", "test");
gofiletop;
beginsel;
gofileend;
delete;
insert "test\n";
#n = dllfunc("SendNow");
if( #n != 0 ) {
exit;
}
endmacro;
のようにしたらいいかと思います。
そういう作戦でどうでしょうか。
|
|