|
こんにちは、お世話になります。
マクロの"runexe"でプログラムを実行して、ある程度時間がかかっていると、
『マクロ内から秀丸エディタを起動したはずですが、10秒待っても応答がありませ
ん。』
というメッセージボックスが出ます。
次のマクロとプログラムで現象が再現します。
--- マクロ
// プログラムを実行して、標準出力を新規のウィンドウに取り込む
$exefile = leftstr(basename, strlen(basename) - strlen(filetype)) + ".exe";
runex $exefile,
1, //sync 同期
0, "", //stdin なし
4, "", //stdout 新規
1, "", //stderr 標準出力と同じ
0, "", //folder なし
0, //show 非表示
0, //nodraw 描画する
0; //encode ANSI
// (0以外の場合)終了コードを表示
#exitcode = getresultex(9);
if (#exitcode != 0) {
message "終了コードは " + str(#exitcode) + " です";
}
endmacro;
--- Cプログラム
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int n = 100000;
int i;
clock_t st;
clock_t ed;
st = clock();
srand((unsigned)time(NULL));
for (i = 0; i < n; ++i) {
printf("%5d ", rand());
if (i % 10 == 9)
printf("\n");
}
ed = clock();
printf("%.3f\n", (double)(ed - st) / CLOCKS_PER_SEC);
return ed - st;
}
メッセージボックスでキャンセルすると、以降は出ませんが、
マクロが終了してしまいます。[再試行]ボタンクリックで
約10秒後に同じエラーになり、以後繰り返しになります。
(メッセージボックスを出したままにする手もありますが...)
標準出力をアウトプット枠にするとエラーにはならないようです。
今までは、プログラム実行の出力はアウトプット枠にしていたのですが、
描画しなければ新規の方が早いようなので、マクロを変更して気付きました。
同期フラグを非同期にすれば出ませんが、プログラムの終了を
待ちたいときもあるので、メッセージはちょっと鬱陶しいです。
マクロの同期状態でのプログラム実行で、一定期間内に終了しない場合
メッセージを出力するという趣旨は理解できるのですが、個人的には
いらないかなあと思っています。
秀丸担当さんの意向や他のユーザーの皆さんのご意見もあると思いますが、
一度ご検討いただけたらと思います。
正規版リリース前のお忙しい時期に申し訳ありません。
余り急いでおりませんので、リリース後でもかまいません。
環境:
Windows XP Pro SP2
秀丸エディタ Version 8.00 b47
|
|