MakeReplyCustomの後処理を教えてくださいNo.12570
hutec さん 24/05/22 13:56
 
識者の皆様、いつも大変お世話になっています。

今回、メール本文に記載ミスがあったら、fromに返信するマクロを作成中です。
秀丸メール側で、"エラー"に対応するテンプレートは用意してあります。
MakeReplyCustomを実行すると、テンプレートを組み込んだ編集画面が開きます。
その画面を閉じて、未送信フォルダに移動したいのですが、
#n = dllfunc( "Move", "", "未送信" );
でエラーが発生します。
tkinfo.dllのエディタ上で実行できないtkinfo.dllが呼び出しが行われました。関数
コード=14

質問(やりたい事)1.
返信の編集画面が自動で閉じるか、最初から開かない様にしたい。
開いた後に、閉じる関数でも良い。

質問2.
テンプレートでは無く、返信メールに詳細なエラー内容を追記したメールを作成した
い。

サンプル等ご存じでしたら、教えてください。どうぞ、宜しくお願いします。

loaddll "tkinfo.dll";
$dencyo_address = "dencyo@xxxx.jp";
//この関数は、フォルダ枠の中で、特定のフォルダまたはアカウントを選択します。
第1引数はアカウント名、第2引数 フォルダ名です。
#n = dllfunc( "SelectFolder", $dencyo_address, "受信" );
#n = dllfunc("SetViewArea", 0);     //範囲 = 全体
#count = dllfunc("MailCount");     //フォルダの中のメールの数
message "main #count=[" + str(#count) + "]"; //debug
if( #count == 0 ) {
    endmacro;
}
#n = dllfunc("SetThreadView", 0);       //スレッド表示になってるなら一覧表示
にする。
#browsemode = browsemode;
if( #browsemode ) {
    browsemodeswitch;       //文字カーソル表示させる。
}
setcompatiblemode 0x00020000;           //マクロ終了後に検索条件を戻す。
setcompatiblemode 0x00000200;           //searchdown2で見つけた文字列を範囲
選択する。
#i = 0;
while( #i < #count) {
 gofiletop;
 $filename = gettext( seltopx, seltopy, selendx, selendy );
  #n = dllfunc("SetMailIndex", #i);
 #n = dllfunc( "MakeReplyCustom", "from", "", "", "エラー" );
 //message "main MakeReplyCustom #n =[" + str(#n) + "]";
 //受信フォルダ-> 未送信フォルダへ移動
 #n = dllfunc( "Move", "", "未送信" );
 #i = #i + 1;
}
if( #browsemode ) {
    browsemodeswitch;       //文字カーソル表示を元に戻す。
}
endmacro;

[ ]
RE:12570 MakeReplyCustomの後処理を教えNo.12571
秀まるお2 さん 24/05/22 14:29
 
>  #n = dllfunc( "MakeReplyCustom", "from", "", "", "エラー" );
>  //message "main MakeReplyCustom #n =[" + str(#n) + "]";
>  //受信フォルダ-> 未送信フォルダへ移動
>  #n = dllfunc( "Move", "", "未送信" );

 ここの部分は、

    #n = dllfunc( "MakeReplyCustom", "from", "", "", "エラー" );
    #n = dllfunc( "SendLater");
    if( #n == 0 ) {
        message "「あとで送信」に失敗しています。";
        endmacro;
    }
    #editorHandle = hidemaruhandle(0);
    #n = dllfunc("SetMainWndTop");
    closehidemaruforced #editorHandle;

 みたいにすればいいと思います。こちらでテストした限りはそれでうまく動きまし
た。

 未送信フォルダにメールを保存するのはMoveじゃなくてSendLater(あとで送信コ
マンド)を使うのと、あと、保存した後のエディタ・ウィンドウを閉じるのは、上記
のようにSetMainWndTopしてからclosehidemaruforcedするような、ちょっとややこし
い処理になります。

[ ]
RE:12571 MakeReplyCustomの後処理を教えNo.12572
hutec さん 24/05/22 16:46
 
秀丸先生ありがとうございます。
うまく行きました。下記の様な前後の手順が判れば、作りやすくなると思うのですが、
なかなか素人には判らなくて大変です。
>    #editorHandle = hidemaruhandle(0);
>    #n = dllfunc("SetMainWndTop");
>    closehidemaruforced #editorHandle;

ついでで申し訳ございませんが、返信メールに文章を挿入して保存する場合は、何の
関数を使用するのでしょうか?

宜しくお願いします。

[ ]
RE:12572 MakeReplyCustomの後処理を教えNo.12573
秀まるお2 さん 24/05/22 17:12
 
> ついでで申し訳ございませんが、返信メールに文章を挿入して保存する場合は、何
>の関数を使用するのでしょうか?

 基本的には人間がやることを1つ1つの命令で書く形になります。カーソルを目的
に位置に移動して文字列入力するようなことを繰り返す形になると思います。

 例えばメール本文の先頭に「あいうえお」を入れるなら、

    gofiletop;
    insert "あいうえお\n";

 みたいなことを書けばいいです。

 もっと具体的に本文に入れたい文字列や具体的な完成形のメールなど書いていただ
ければ、それのサンプルマクロも提供できると思います。

[ ]
RE:12573 MakeReplyCustomの後処理を教えNo.12574
hutec さん 24/05/22 18:41
 
秀丸先生、有り難うございました。
>    insert "あいうえお\n";
これで、本文の先頭に書き込めたので、
自分で頑張ってみます。
また、宜しくお願いします。


[ ]