AddAttach 関数が失敗するNo.11132
Iranoan さん 04/10/27 19:38
 
 秀まるおさん今日は、Iranoan です。
run $app + " > con";
で作成したファイルを AddAttach 関数で添付しようとすると、作成するファ
イル・サイズが大きいと、失敗します。同じマクロを失敗したすぐ後に実行す
ると、今度は成功するので、マクロの間違いではないと思います。

 念の為、その時のログを末尾に付けます。
 こちらの環境は、Windows98+IE6.0+鶴亀 Ver.3.71 です。

19:14:20.380 (12341) tid=3969668035 AddAttach()
19:14:20.380 (12364) tid=3969668035 will GetOpenFileName()
19:14:21.980 (12368) tid=3969668035 done GetOpenFileName()
19:14:21.980 (12032) tid=3969668035 AddAttach param
19:14:22.420 ( 243) tid=3969668035 d:\home\mail\@account\送信添付
\041027_13\hm_man.lzh
19:14:24.170 (2384) tid=3969668035 CommandMacroSub gpg.mac
19:14:24.170 (3436) tid=3969668035 tkinfo 16
19:14:24.170 (3436) tid=3969668035 tkinfo 4
19:14:24.170 (3436) tid=3969668035 tkinfo 4
19:14:24.170 (3436) tid=3969668035 tkinfo 3
19:14:24.170 (3436) tid=3969668035 tkinfo 4
19:14:24.170 (3436) tid=3969668035 tkinfo 3
19:14:24.170 (3436) tid=3969668035 tkinfo 4
19:14:24.170 (3436) tid=3969668035 tkinfo 4
19:14:24.170 (3436) tid=3969668035 tkinfo 46
19:14:24.170 (3436) tid=3969668035 tkinfo 6
19:14:24.170 (6642) tid=3969668035 エディタコマンド: 40002
19:14:24.720 (13920) tid=4291264715 HmCreate
19:14:24.720 (2384) tid=4291264715 call WinMainSub
19:14:24.720 (2384) tid=4291264715 FrameWndProc: WM_CREATE
19:14:24.720 (2384) tid=4291264715 ClientWndProc: WM_CREATE
19:14:24.720 (2384) tid=4291264715 return WinMainSub
19:14:24.720 (13924) tid=4291264715 HmCreate return
19:14:24.720 (5694) tid=4291264715 InitOuterHidemaru
19:14:24.830 (18701) tid=4291264715 Start Waiting MacroExecContinue
19:14:24.890 (2384) tid=3969668035 SwitchMacro dest-tid=4291264715
19:14:24.890 (2384) tid=4291264715 ReceiveSwitchMacro
19:14:24.940 (18701) tid=3969668035 Start Waiting MacroExecContinue
19:14:25.000 (3436) tid=3969668035 tkinfo 45
19:14:25.000 (3436) tid=3969668035 tkinfo 3
19:14:35.270 (3436) tid=3969668035 tkinfo 45
19:14:35.270 (3436) tid=3969668035 tkinfo 58
19:14:35.270 (12032) tid=3969668035 AddAttach param
19:14:35.270 (7376) tid=3969668035 ファイルのコピーに失敗しました。
ファイル名 = d:\home\mail\hm_man.lzh.gpg
エラーコード = 32
19:14:40.760 (7402) tid=3969668035 MessgeBox2() exit
19:14:47.020 (10115) tid=4291264715 ProcessFrameClose()
19:14:47.020 (7432) tid=4291264715 DialogBox2Param() template=249
19:14:47.020 (16003) tid=4291264715 MessageBeep2
19:14:47.020 (16003) tid=4291264715 MessageBeep2
19:14:49.050 (7434) tid=4291264715 DialogBox2Param() exit
19:14:49.050 (10202) tid=4291264715 DestroyWindowします
19:14:49.110 (4801) tid=4291264715 WM_DESTROY
19:14:49.110 (4809) tid=4291264715 ImeをOFFにしました

[ ]
RE:11132 AddAttach 関数が失敗するNo.11133
秀まるお さん 04/10/27 20:58
 
 run文だと、プログラムを起動してすぐマクロ実行を続行してしまいます。な
ので、例えば起動された側のソフトがファイルにアクセス中(この場合書き込み
中)のまま鶴亀側からそのファイルをAddAttachしようとするとエラーになって
も仕方がないです。エラーログによると、エラーコード32 = sharing violation
= 共有違反となっています。

 今回のケースは">con"指定なので、つまり秀丸が起動してる訳みたいですけど、
run文によって起動された秀丸は秀丸でrun文を実行しつつ、マクロはマクロで並
行して動作してしまってるようです。僕も最近の秀丸の仕様を知らないのでなん
ですが、これをうまく、プログラムが終了するまでマクロを待機させるように直
せば解決するんじゃないかと思います。

[ ]
RE:11133 AddAttach 関数が失敗するNo.11135
Iranoan さん 04/10/27 23:03
 
 秀まるおさん今日は、Iranoan です。
> run文だと、プログラムを起動してすぐマクロ実行を続行してしまいます。
 ヘルプによると、
> もし起動するプログラムの標準出力がリダイレクトされている場合、run文は
> runsync文同様に、待機するようになります。
なので、この点は問題ないはずですよね。

>  今回のケースは">con"指定なので、つまり秀丸が起動してる訳みたい
 起動しているプログラムは GPG で、秀丸ではありません。←念の為

> 僕も最近の秀丸の仕様を知らないのでなん
> ですが、これをうまく、プログラムが終了するまでマクロを待機させるように直
> せば解決するんじゃないかと思います。
 最初に書いたように、秀丸の run 文と同じ動きをするなら、待機状態のは
ずなんですが....。

 秀丸で動作させるマクロに書き直すにも、AddAttach 関数を呼び出すわけに
はいかないし。

[ ]
RE:11135 AddAttach 関数が失敗するNo.11136
秀まるお さん 04/10/27 23:09
 
    run "cmd.exe /c dir >con";
    message "a";

 ってマクロを秀丸上で実行したら、run文で起動された秀丸が裏で動作しなが
ら、表の秀丸が"a"を表示するというへんてこな状態になりましたが…。ちょっ
と僕も秀丸の動作を理解してないので、明日また秀丸担当に聞いてみます。

 とりあえず、秀丸での">con"の動作が怪しいとしたら、

 runsync2 $app + ">c:\\$$$temp$$$.$$$";
 openfile "c:\\$$$temp$$$.$$$";

 のように変えてみてはどうでしょ?

[ ]
RE:11136 AddAttach 関数が失敗するNo.11137
秀まるお さん 04/10/28 09:33
 
 やっぱり、秀丸でのrun文で">con"とした場合、runによって起動された秀丸と
は別にマクロは並行して先に進んでしまう仕様だそうです。なので、runで起動
するソフトの終了を待つには、runsyncかrunsync2文を使うしか無いです。その
場合、">con"は使えないので、何らかの一時ファイルにリダイレクトしてからそ
のファイルを秀丸で開くという手順にするしか無いと思います。

[ ]
RE:11137 AddAttach 関数が失敗するNo.11138
Iranoan さん 04/10/28 11:38
 
 秀まるおさん今日は、Iranoan です。
 ##ひょっとして、そろそろ http://www.maruo.co.jp/turukame/3/ に移動し
た方がよいのかなあ〜。

>  とりあえず、秀丸での">con"の動作が怪しいとしたら、
 run 文、AddAttach 関数のどちらか悪いか解らないので、こちらに投稿しま
した。run 文が悪いと解っていれば、秀丸担当さんに聞きますので(^^)。

>  runsync2 $app + ">c:\\$$$temp$$$.$$$";
>  openfile "c:\\$$$temp$$$.$$$";
>
>  のように変えてみてはどうでしょ?
 マクロを作り直していたら、「> con」としてプロンプトを表示しないと良
くない場合があることが解った事もあり、取り敢えず runsync2 を使います。

 ただ
>  やっぱり、秀丸でのrun文で">con"とした場合、runによって起動された秀丸と
> は別にマクロは並行して先に進んでしまう仕様だそうです。
ということは、ヘルプの記載
> > もし起動するプログラムの標準出力がリダイレクトされている場合、run文は
> > runsync文同様に、待機するようになります。
> > ^^^^^^^^^^^^^^^^^^^^^^^^^
が違うということでしょうか?

[ ]
RE:11138 AddAttach 関数が失敗するNo.11139
秀まるお さん 04/10/28 13:13
 
 秀丸担当の話だと、現状のrun文での">con"指定時の動作は変更できないそう
なので、ヘルプを直すことにします。

 それとは別に将来検討の案件として、runsync/runsync2文でも">con"指定でき
るようにしたいという話もあります。

[ ]
RE:11139 AddAttach 関数が失敗するNo.11140
Iranoan さん 04/10/28 18:12
 
 秀まるおさん今日は、Iranoan です。
>  秀丸担当の話だと、現状のrun文での">con"指定時の動作は変更できないそう
> なので、ヘルプを直すことにします。
 解りました。

>  それとは別に将来検討の案件として、runsync/runsync2文でも">con"指定でき
> るようにしたいという話もあります。
 これが出来れば解決ですね(^^)。

[ ]