|
お疲れ様です。
現状の秀丸エディタでは5で挿入すると同期処理になるんですね、
ヘルプに記載があるだけでも助かります、よろしくお願いします!
話が変わって、
以下は、5で挿入する場合に非同期処理を行うアイデアです、
非同期処理を行いたい場面があるため、ご一考頂けますと幸いです。
「出力の受け取り側が自身になるという都合」は、
パイプ(stdout/stderr)からの文字列読み取りと、読み取った文字列を秀丸エディタ
へ書き込む処理を
ユーザに負担して貰うことで回避できる(?)と考えています。
秀丸エディタ側で以下2つの新規関数を用意します。
・必ず非同期で実行するrunex_async関数。
(内部実装は、Windows-APIのCreateProcessを呼び出します)
・実行ファイルの出力(stdout/stderr)をパイプから読み取り秀丸エディタへ書き込
む関数。
以下は上記関数を利用した擬似コードです、
---- 擬似コード ここから ----
//時間のかかる処理を非同期で実行する。
#handle=runex_async "foo.exe",
, 0, "" //標準入力
, 5, "" //標準出力 5(挿入)
, 5, "" //5標準エラー (挿入)
... 引数は以下略 ...
#exists_remaining=true;
while(#exists_remaining){
//実行ファイルの出力(stdout/stderr)をパイプから読み取り秀丸エディタへ書
き込む
#exists_remaining = runex_async_pipe(#handle);
//
//ユーザーはここにコードを記述する。
//
call my_process arg1, arg2, arg3, ...;
}
//
//ユーザーはここにコードを記述する。
//
call my_process arg1, arg2, arg3, ...;
---- 擬似コード ここまで ----
長文で申し訳ありません、よろしくお願いいたします。
|
|