保存するファイルが空だったとき…の処理No.08888
たまがわ さん 03/05/27 16:13
 
 いつもお世話になっています。

 「設定−秀丸エディタの動作環境−編集−高度な編集」で「保存するファイ
ルが空だったときは確認する」にチェックが入っている場合についてですが、
マクロ中でレジストリを変更して一時的にこの確認メッセージがでないように
しようとしているんですけど、鶴亀本体で編集しているときはうまくいきませ
ん。

 これはテスト用に作ったマクロですが、適当なメールを選択して実行すると
「test.txt - は空のファイルです。削除しますか」というメッセージがやっ
ぱりでます。
loaddll "tkinfo.dll";
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "DeleteAtNull", 0;
closereg;
#n = dllfunc("EnvChanged");
#n = dllfunc("BeginEditMail");
#r = readonly;
#b = browsemode;
if (#r) readonlyswitch;
if (#b) browsemodeswitch;
#n = dllfunc("SwitchHeaderView", 0);
selectall; delete;
saveas "c:\\test.txt";
if (#r) readonlyswitch;
if (#b) browsemodeswitch;
endmacro;

 一方、以下のように、エディタを起動して処理するときは、メッセージはで
ず、うまくいきます。(比較のため上と同じようにしてあります)
loaddll "tkinfo.dll";
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "DeleteAtNull", 0;
closereg;
#n = dllfunc("EnvChanged");
#n = dllfunc("OpenMail");
#r = readonly;
#b = browsemode;
if (#r) readonlyswitch;
if (#b) browsemodeswitch;
#n = dllfunc("SwitchHeaderView", 0);
selectall; delete;
saveas "c:\\test.txt";
if (#r) readonlyswitch;
if (#b) browsemodeswitch;
endmacro;


 鶴亀本体編集時にも、うまくいってくれるとありがたいです。
(直接関係ないと思いますが、レジストリ変更してEnvChangedしても、設定画
  面を開くとチェックの状態が変わっていません。一度「OK」を押して、も
  う一度設定画面を開くと反映されるんですが)

(windows xp pro sp1, TuruKame 2.83)

[ ]
RE:08888 保存するファイルが空だったときNo.08889
ひろ さん 03/05/27 17:15
 
 秀まるおさん、たまがわさん今日は、ひろです。
> openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
> writeregnum "DeleteAtNull", 0;
> closereg;
> #n = dllfunc("EnvChanged");
 秀丸側の設定を変更しているので、tkinfo.dll の EnvChanged 関数ではな
く、envchanged 文を使えば良いと思います。
 だけど tkinfo.hlp に
> envchanged文は何も影響しないはずです。
と有りますね。そんなはずないですよね。→秀まるおさん

>  一方、以下のように、エディタを起動して処理するときは、メッセージはで
> ず、うまくいきます。(比較のため上と同じようにしてあります)
 むしろ、こちらかおかしい気がします。

[ ]
RE:08889 保存するファイルが空だったときNo.08890
たまがわ さん 03/05/27 17:49
 
ひろさん、こんばんは。

 「全般的な設定」の反映がdllfunc("EnvChanged")で、「秀丸エディタの動作環
境」の反映がenvchangedということですね。
 スッキリしました。ありがとうございます。

> だけど tkinfo.hlp に
>> envchanged文は何も影響しないはずです。
>と有りますね。そんなはずないですよね。→秀まるおさん

 私の理解不足でしたが、確かにこの辺で私の思い込みが始まったような気もします。

>>  一方、以下のように、エディタを起動して処理するときは、メッセージはで
>> ず、うまくいきます。(比較のため上と同じようにしてあります)
> むしろ、こちらかおかしい気がします。

 これでこれまでずっとうまくいっていたので、てっきりdllfunc("EnvChnaged")で
包括的に反映してくれるものと思い込んでしまいました。
 過剰サービス……かな(^^;)。

 ヘルプの表記を工夫することが、私のようなおっちょこちょいを減らす手だてには
なると思います。

[ ]
RE:08890 保存するファイルが空だったときNo.08891
秀まるお さん 03/05/27 18:13
 
 envchanged文について、なぜヘルプに「影響しないはず」と書いてあるのか、
自分でも分かりません。

 envchanged文を実行して、果たしてどの程度ちゃんと効くのか調べてないので
なんですが、とりあえず「効くらしい」とでも書いておきます。

[ ]
RE:08891 保存するファイルが空だったときNo.08892
ひろ さん 03/05/27 19:11
 
 秀まるおさん今日は、ひろです。
>  envchanged文を実行して、果たしてどの程度ちゃんと効くのか調べてないので
> なんですが、とりあえず「効くらしい」とでも書いておきます。
 宜しくお願いします。

 あと僭越ではありますが、EnvChanged 関数の記述について、
> EnvChanged関数は、鶴亀メールの「全般的な設定」について、レジストリに保
> 存された内容を読み込み直し、鶴亀メール側に反映します。秀丸マクロの
> envchanged文の鶴亀版です。
と有りますが、これに
---------------------------------------------------------------------
「秀丸エディタの動作環境」について、読み込み直しを反映する場合は、
envchanged文を使用します。
---------------------------------------------------------------------
と加えて頂ければ、より誤解が減るかと思います。

[ ]
RE:08892 保存するファイルが空だったときNo.08896
秀まるお さん 03/05/28 08:15
 
> 「秀丸エディタの動作環境」について、読み込み直しを反映する場合は、
> envchanged文を使用します。

 んではさっそく追加します。

[ ]
RE:08896 保存するファイルが空だったときNo.08904
ひろ さん 03/05/28 12:18
 
 秀まるおさん今日は、ひろです。
>  んではさっそく追加します。
 採用ありがとございます。

[ ]