|
お世話になります。
以下のようにやりたいことがうまくできず悩んでいます。
■やりたいこと
1.現在のレジストリ値をバックアップ
2.レジストリ値を書き換え
3.メールを作成
4.メールを保存し、作成画面(エディタ)を閉じる ★ここがポイント★
5.レジストリ値をリストアする
■実現できないで悩んでいること
1.4のメール作成画面(エディタ)を閉じるを実行するとマクロが終了してしま
うので、
5が実行できない。
2.4と5を入れ替えると、以下のエラーが発生するので不可。
「エディタ上で実行できないTKInfo.dll呼び出しが行われました」
3.EnvChangedを実行しなければ、レジストリは書き換わり一見問題なさそうだが、
秀丸メール側の設定を見ると反映がされていないのでNG。
■考察
exit関数のマクロが終了しない版がないかと探してみたのですが、見つからず。
散々悩んで思いついたのは、下記マクロ実行後に再度別マクロを呼び出して、
レジストリ書き込み、反映(EnvChanged)を実行させる方法です。
他にいい案があるよ。などありましたら、アドバイスいただければ幸いです。
よろしくお願いいたします。
■マクロ
loaddll "TKInfo.dll";
//1.現在のレジストリ値をバックアップ
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config\\Edit";
#Before = getregnum("Indent");
//2.レジストリ値を書き換え
writeregnum "Indent", 0;
closereg;
#n = dllfunc("EnvChanged");
//3.メールを作成
#n = dllfunc("MakeReplyCustom", "Single", "");
$s = dllfuncstr("NewEditorMacro");
//なにか処理する//
//4.メールを保存し作成画面(エディタ)を閉じる
#n = dllfunc("SaveDraft");
if(#n != 0) {
exit; ★実行すると以降が実行されない
}
//5.レジストリ値をリストアする
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config\\Edit";
writeregnum "Indent", #Before;
closereg;
#n = dllfunc("EnvChanged");
|
|