鶴亀メールVer. 1.07で、強制終了No.00967
ばほ さん 01/04/16 10:35
 
鶴亀メールをVer. 1.07にアップグレードしたら、強制終了するようになりました。
メールの受信が終わった時に発生します。100%起きる訳ではありませんが、常駐
鶴亀でも、通常画面でも発生することがあります。

ダンプを添付します。

********** 01/04/16 10:15:08.609 1.07  Exception
eax=009F469B ebx=00000000 ecx=000003E8 edx=00000000 esi=00E38776 edi=00000001 ebp=0011F578 esp=0011F4F8 eip=00DD1A59
Stack Dump
00000000 00E38776 00000000 77DE4961 77E6EC38 000002C8 FFFFFFFF 0011F550
00000000 00000000 0011F534 0011F54C 00000001 00000000 00000004 00000000
00000000 0011F55C 77E5D032 000002C8 000F001F 000A0000 0C860000 000A0000
00000000 0011F578 04A78637 000002C8 00000000 00000001 00000000 010A0000
0011F804 00DD2D02 00E3442A 00000000 00D99EF8 00090224 00000000 0055A118
0011F5C0 77DFD7B5 00040000 00000000 00000000 00C61000 00000000 000002FC
0000046D 0011F5F0 00000045 77F943D3 00121378 00120000 00000045 001D7970
0011F5C8 00000200 0011F780 77FB80DB 77F94418 FFFFFFFF 0011F790 77FC9816
FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Param#5  Param#6  Param#7  Param#8  Param#9  Param#10 MachineCode
0011F804 00DD2D02 00E3442A 00000000 00D99EF8 00090224 00000000 0055A118 0011F5C0 77DFD7B5 00040000 00000000 38 5E 3B 75 1A 39 5E 48
0065006D 0064005C 006D0075 002E0070 00780074 00000074 00000000 00000000 00000000 00000000 00000000 00000000

10:15:08.609 R  626 0007020C 0281 00000001 C000000F
10:15:08.609 S  619 0007020C 0007 00120200 00000000
10:15:08.609 S  619 0007020C 0008 00090224 00000000
10:15:08.609 R  626 0007020C 0008 00090224 00000000
10:15:08.609 S  619 0007020C 0281 00000000 C000000F
10:15:08.609 R  626 0007020C 0281 00000000 C000000F
10:15:08.609 S 3763 000801FA 004E 00000000 0011D108
10:15:08.609 R 3770 000801FA 004E 00000000 0011D108
10:15:08.609 R  626 0007020C 0007 00120200 00000000
10:15:08.609 R 2736 00120200 0007 00000000 00000000
10:15:08.609 S 2734 00120200 547B 00000000 00000000
10:15:08.609 R 2736 00120200 547B 00000000 00000000
10:15:08.609 S 2734 00120200 046D 000002FC 00000000
10:15:08.609 S  619 0007020C 046D 000002FC 00000000
10:15:08.609 R  626 0007020C 046D 000002FC 00000000
10:15:08.609 R 2736 00120200 046D 000002FC 00000000
10:15:08.609 R 2736 00120200 5472 0048AF7C 00000000
10:15:08.609 r  908 00120200 5472 0048AF7C 00000000
10:15:08.609 P  901 0007020C 046E 00000000 00000000
10:15:08.609 S  619 0007020C 046E 00000000 00000000



[ ]
RE:00967 鶴亀メールVer. 1.07で、強制終了No.00985
秀まるお2 さん 01/04/16 12:43
 
> 鶴亀メールをVer. 1.07にアップグレードしたら、強制終了するようになりました。
> メールの受信が終わった時に発生します。100%起きる訳ではありませんが、常駐
> 鶴亀でも、通常画面でも発生することがあります。

 受信が終わった後のマクロ実行中に死んでるようです。マクロでのウィンドウ切り
換えタイミングで死んでます。

 そのマクロの内容教えてください。

[ ]
RE:00985 鶴亀メールVer. 1.07で、強制終了No.01009
ばほ さん 01/04/16 17:19
 
秀まるお様

>
> 受信が終わった後のマクロ実行中に死んでるようです。マクロでのウィンドウ切り
>換えタイミングで死んでます。
>
> そのマクロの内容教えてください。

実行しているマクロは、最近Window切り替えでいろいろ質問させてもらっていた「届
いたメールの中で必要なものを転送する」マクロです。素人製作の非常にお恥ずかし
いマクロですが、添付いたします。

$transfer = "xxxxxx@address.ne.jp";// 通知を送るメールアドレス
$accountn = "仕事用";// 通知を送る時使用するアカウント名
$subject  = "メール受信連絡";// 通知メールのタイトル
#Tell_time = 1;// 1:日時を付ける 0:日時を付けない
#Tell_mail = 1;// 1:送信者アドレスを付ける 0:送信者アドレスを付けない
#Tell_name = 1;// 1:送信者名を付ける 0:送信者名を付けない
#Tell_body = 32;// 通知メールに付ける本文のバイト数(0:本文を付けない)

// 通知するメールの[From]条件
$Trs_add[0] = "@vip.vip.jp";
$Trs_add[1] = "@daiji.vip.jp";

// 通知するメールの[Subject]条件
$Trs_sub[0] = "これは重要";


// ここから先は、変更する必要がありません。
#Trs_winh = -1;// 転送メールのハンドル
#Trs_mnum = 0;// 通知するメール数初期値

loaddll "TKInfo.dll";
$C_account =dllfuncstr("CurrentAccount");// 現在表示中のアカウント名保存
$C_folder =dllfuncstr("CurrentFolder");// 現在表示中のフォルダ名保存
#C_mail =dllfunc("MailIndex");// 現在表示中のメール番号保存

if(dllfunc("IsTuruKameMain")){// 鶴亀の状態チェック
if (dllfunc("SetMainWndTop")){// メインウインドウをトップに移動できれば
#InTray = 0;// メインウインドウ表示中
} else {// できなければ、常駐状態
#n=dllfunc("RestoreWindow");// 一時的に鶴亀起動
#InTray = 1;
}
} else {
message "メインウインドウ以外でこのマクロは実行できません";
endmacro;
}

if (dllfunc("RecvMailCount") < 1) goto abort;
while(dllfunc("SelectRecvMail")){
#n=dllfunc("RestoreWindow");
$from = dllfuncstr("CurrentHeader", "From");// 送り主の解読
$from_mail = dllfuncstr("SetEmailOnly", $from);
$from_name = dllfuncstr("SetNameOnly", $from);
$o_sub = dllfuncstr("CurrentHeader", "Subject");// 元の題名の解読
#Mst_tell = 0;// 通知するフラグ

#i = 0;// 条件のカウントクリア
while($Trs_add[#i] != ""){// 送り主のチェック
#ret = strstr($from, $Trs_add[#i]);
if (#ret != -1) #Mst_tell = #Mst_tell+1;
#i = #i + 1;
}

#i = 0;// 条件のカウントクリア
while($Trs_sub[#i] != ""){// 題名のチェック
#ret = strstr($o_sub, $Trs_sub[#i]);
if (#ret != -1) #Mst_tell = #Mst_tell+1;
#i = #i + 1;
}

if (#Mst_tell > 0){
#Trs_mnum = #Trs_mnum+1;
$T_sub[#Trs_mnum] = $o_sub;
$T_from_mail[#Trs_mnum] = $from_mail;
$T_from_name[#Trs_mnum] = $from_name;
if (#Tell_body != 0) {
#n=dllfunc("SelectPane", 2);
if( browsemode ) browsemodeswitch;
moveto 0,0;
beginsel;
right #Tell_body;
copy;
beginclipboardread;
$T_body[#Trs_mnum] = getclipboard;
while( $T_body[#Trs_mnum] == "\x0A")$T_body[#Trs_mnum] = getclipboard;

if (rightstr($T_body[#Trs_mnum], 1) == "\x0A")
 $T_body[#Trs_mnum] = leftstr($T_body[#Trs_mnum], (strlen($T_body[#Trs_mnu
m])-1));
#bl = strlen($T_body[#Trs_mnum]);
$body_tmp = getclipboard;
while(($body_tmp != "") && (#bl < #Tell_body)){
if( $body_tmp != "\x0A") $T_body[#Trs_mnum] = $T_body[#Trs_mnum] + " " + $bo
dy_tmp;
#bl = strlen($T_body[#Trs_mnum]);
$body_tmp = getclipboard;
if (rightstr($body_tmp, 1) == "\x0A") $body_tmp = leftstr($body_tmp, (strlen
($body_tmp)-1));
}
$T_body[#Trs_mnum] = leftstr($T_body[#Trs_mnum], #Tell_body);
}
}
}

if (#Trs_mnum > 0){// 通知すべきメールがあったら
#n =dllfunc("NewMail");// 通知用メール作成
#Trs_winh =hidemaruhandle(0);
$s =dllfuncstr("SetHeader","To", $transfer);
$s =dllfuncstr("SetHeader","Subject", $subject);
#n =dllfunc("SetEditorAccount", $accountn);

moveto 0,0;

while(#Trs_mnum > 0){
insert "[" + $T_sub[#Trs_mnum] + ":";
if (#Tell_mail == 1) insert $T_from_mail[#Trs_mnum];
if (#Tell_name == 1) insert "<" + $T_from_name[#Trs_mnum] + ">";
if (#Tell_body != 0) insert " " + $T_body[#Trs_mnum];
insert "]";
insertreturn;
#Trs_mnum = #Trs_mnum - 1;
}
beginsel;
gofileend;
delete;

if (#Tell_time != 0){// 受信した日時を付加する
insert "以上のメールを[";
insert date;
insert time;
insert "]に受信しました";
insertreturn;
}

#n =dllfunc("SendLater");
#n =dllfunc("SetMainWndTop");
closehidemaruforced(#Trs_winh);
}

abort:
#n =dllfunc("SelectFolder", $C_account , $C_folder);// 最初見ていたメールへ移動
#n =dllfunc("SetMailIndex", #C_mail);

if (#InTray == 1) #n = dllfunc("Exit");// 常駐していたなら元に戻す
endmacro;

[ ]
RE:01009 鶴亀メールVer. 1.07で、強制終了No.01020
秀まるお2 さん 01/04/16 18:44
 
 まいどどうも。おかげさまで現象が再現しました。

 何か他のウィンドウでメニューを操作していたりして鶴亀本体のアクティブ化に失
敗して、そのあと死んでました。

 アクティブ化に失敗した時の対処を入れてテストしてはいたんですけど、その後特
定の関数が実行されるとダメみたいでして…。さっそく修正させていただきます。

[ ]
RE:01020 鶴亀メールVer. 1.07で、強制終了No.01085
ばほ さん 01/04/17 17:12
 
秀まるお様

> アクティブ化に失敗した時の対処を入れてテストしてはいたんですけど、その後特
>定の関数が実行されるとダメみたいでして…。さっそく修正させていただきます。

Ver. 1.08をダウンロードさせていただきました。
報告していた問題は解決したようです。・・・が、別の問題が見つかりました。

エディタを起動して、メールを作成中に、本体を閉じて常駐状態に戻した場合、定期
受信の後に実行するマクロは、エディタウインドウ上で実行されてしまいます。
これは仕様でしょうか?

マクロで、自分がどこで動いているのか判断すればよいのですが、私の希望としては、
定期受信後のマクロは必ずメインウインドウで起動するようにして頂きたいのですが、
無理でしょうか?

[ ]
RE:01085 鶴亀メールVer. 1.07で、強制終了No.01092
秀まるお2 さん 01/04/17 18:43
 
> エディタを起動して、メールを作成中に、本体を閉じて常駐状態に戻した場合、定期
> 受信の後に実行するマクロは、エディタウインドウ上で実行されてしまいます。
> これは仕様でしょうか?

 手元で、単純に

    loaddll "tkinfo.dll";
    #n = dllfunc("RecvMailCount")
    message str(#n);

 だけのマクロを作ってテストした限りでは、ちゃんと(見えない)鶴亀メール本体
ウィンドウ上で実行されまして、メール数のメッセージボックスと作成中のエディタ
とは独立して操作出来ました。

 もしやと思って、この前連絡いただいたマクロの先頭部分を使ってみましたが、う
まく動いているみたいです。↓

    if(dllfunc("IsTuruKameMain")){// 鶴亀の状態チェック
        if (dllfunc("SetMainWndTop")){
            message "メインウィンドウ表示中";
        } else {
            #n=dllfunc("RestoreWindow");
            message "常駐鶴亀";
        }
    } else {
        message "メインウインドウ以外でこのマクロは実行できません";
    }

 何かまた条件があるのやら?

[ ]