「run」マクロのリダイレクトNo.13899
M.A さん 03/01/23 21:19
 
環境:秀丸V3.19+Windows2000SP3

マクロヘルプに
> run文は[その他]-[プログラム実行]と同様に標準入出力の
> リダイレクトが可能です。もし起動するプログラムの標準
> 出力がリダイレクトされている場合、run文はrunsync文
> 同様に、待機するようになります。
とあります。

しかし以下のようなマクロを作成し
---------------------------------------
// dir.mac
run "CMD.EXE /K DIR C:\\WINNT >con";
message "macro end";
---------------------------------------
メニューの[マクロ]−[マクロ実行]からマクロを実行すると
リダイレクト終了前にメッセージボックスが表示されます。
どうやらrun文で待機しないようです。

一方、「ファイル名を指定して実行」で
"C:\Program Files\Hidemaru\Hidemaru.exe" /x dir.mac
と記述して、起動と同時にマクロを実行するとrun文で待機するようです。

待機する/待機しない のどちらが正常な動作なのでしょうか?
私の希望ではどちらの場合も 待機しない が望ましいのですが…

[ ]
RE:13899 「run」マクロのリダイレクトNo.13903
ひろ さん 03/01/24 14:02
 
 M.A さん今日は、ひろです。
> // dir.mac
> run "CMD.EXE /K DIR C:\\WINNT >con";
> message "macro end";
> ---------------------------------------
> メニューの[マクロ]−[マクロ実行]からマクロを実行すると
> リダイレクト終了前にメッセージボックスが表示されます。
> どうやらrun文で待機しないようです。
>
> 一方、「ファイル名を指定して実行」で
> "C:\Program Files\Hidemaru\Hidemaru.exe" /x dir.mac
> と記述して、起動と同時にマクロを実行するとrun文で待機するようです。
 たぶん何方も正しい動作です。ヘルプに、
> もし起動するプログラムの標準出力がリダイレクトされている場合、
> run文はrunsync文同様に、待機する
とありますが、これは説明が省かれていて、
もし起動するプログラムの標準出力が``マクロを実行しているウィンドウに''
リダイレクトされている場合、run文はrunsync文同様に、待機する
が正しいと思います。

 次にリダイレクトが、マクロを実行したウィンドウに出力される条件は、
(1)範囲選択中
(2)現在のウィンドウの内容が空
で、これ以外はウィンドウが新規に開かれ、そちらにリダイレクトされます。
ですから必ず待機させたくないなら、この条件に当てはまらないようにマクロ
に処理を追加してやればよいです。

[ ]
RE:13903 「run」マクロのリダイレクトNo.13907
M.A さん 03/01/24 19:32
 
なるほど。
疑問が解決しました。
ご回答ありがとうございました。

>もし起動するプログラムの標準出力が``マクロを実行しているウィンドウに''
>リダイレクトされている場合、run文はrunsync文同様に、待機する
>が正しいと思います。
>
> 次にリダイレクトが、マクロを実行したウィンドウに出力される条件は、
>(1)範囲選択中
>(2)現在のウィンドウの内容が空
>で、これ以外はウィンドウが新規に開かれ、そちらにリダイレクトされます。
>ですから必ず待機させたくないなら、この条件に当てはまらないようにマクロ
>に処理を追加してやればよいです。

[ ]