←前へ 次へ→ 機能別Q&A 質問番号順Q&A 秀丸エディタQ&A集トップ

[HMM0069A]

●マクロ処理中にダイアログボックスを出す方法

Q. マクロ処理中にダイアログボックスを出して、「処理中です」と表示させたいのですが?。

A. 全ての場合についてできるわけではないですが、while ループかなんかで処理をするような場合については「秀まるおのマクロサーバ」を使って以下の様な感じで何とかなるんじゃないでしょうか?

以下の例では、"0"〜"9"の文字を繰り返し1000個まで表示させます。「中止」ボタンをクリックすると処理を中断します。

// マクロサーバで常にダイアログを表示させるサンプル

run "macserv.exe";
ddeinitiate "HideMacroServer", "AllService";
ddepoke "newdialog", "20,秀丸マクロ";
ddepoke "newcontrol", "text,,処理中です";
ddepoke "newcontrol", "defbutton,,中止";
ddepoke "notify", "10";
$item = "";
ddestartadvice "dlgresult", $item;
ddeexecute "dialog lastactiveparent";

while( 1 ){

ddewaitadvice $item, 10;

// 「中止」ボタンが押されたら終了する
if( $item != "" ) break;

// 元々のコード例:ここから
// 終わったら break でループを抜ける
#n = #n + 1;
#m = #m + 1;
if (#n > 9) #n = 0;
insert str(#n);
if (#m > 1000) break;
// 元々のコード例:ここまで

}
ddeexecute "enddialog";
ddestopadvice "dlgresult";
ddeexecute "exit";
endmacro;

// (ここまで)-----------------------------------------------


←前へ 次へ→ 機能別Q&A 質問番号順Q&A 秀丸エディタQ&A集トップ