|
プログラム実行でアウトプット枠に出力中となるということは、おそらくrunex文が
非同期で、標準出力をアウトプット枠に指定されているということかと思います。
例えば以下のような感じかと思います。
runex @"cmd.exe /c copy con c:\test\test.txt && more c:\test\test.txt" //Ctr
l+Cで終わります
, 0 //sync 0:async, 1:sync
, 0, "" //stdin 0:none, 1:auto, 2:<file, 3:(reserved),
// 4:current content, 5:selection
, 8, "" //stdout 0:none, 1:auto, 2:>file 3:>>file, 4:new window,
// 5:insert, 6:replace, 7:>output pane, 8:>>output pane
, 0, "" //stderr 0:none, 1:auto or >>stdout, 2-8:same as stdout's param
, 0, "" //folder 0:none, 1:current, 2:specify 3:(reserved), 4:exe's
, 1 //show 0:auto, 1:show, 2:hide, 3-13:ShellExecute()'s SW_*
, 1 //draw 0:draw, 1:no draw when stdout redirected
, 0 //encode 0:ansi, 2:utf-16, 6:utf-8
, 0 //extended flags
;
endmacro;
この場合、マクロが終わっても、アウトプット枠は処理中...のままになって、言わ
れている通りになります。
もしデバッグ用にアウトプット枠を使われている場合、デバッグでない通常使用では
アウトプット枠への出力をしない(stdoutのパラメータを0)ようにするといいです。
目的と違うかもしれませんが、アウトプット枠で処理中...にならないようにする場
合、JavaScript対応の、hidemaru.runProcessで非同期の標準出力を使う方法があり
ます。
例えば以下のようにします。
js{
debuginfo(2);
exe=hidemaru.runProcess( @"cmd.exe /c dir c:\windows\system32", "", "stdio",
"sjis");
//あるいはexe=hidemaru.runProcess( @"cmd.exe /c copy con c:\folder\test.txt
&& more c:\folder\test.txt" , "", "guiStdio", "sjis");
exe.stdOut.onReadLine(function(s){
console.log(s);
});
}
endmacro;
ただこの場合は、runexとは違って、実行した秀丸エディタを終了すると終わってし
まうので、ずっと常駐させるには向かないかもしれません。
ずっと常駐させつつ、さらに秀丸エディタを終了させてもずっとモニタリングするの
は難しいですが、プライベートモードを使うと一応不可能ではないです。
でもアウトプット枠は使えない制限もあって、けっこう複雑なことになってきます。
|
|