【Q&A原稿】マクロ処理中ダイアログNo.00264
JRくん さん 98/10/04 17:53
 

新規原稿です。
#出すタイミングがよろしくありませんが(^^;)。

[HMM0069A]
●マクロ処理中にダイアログボックスを出す方法
Q. マクロ処理中にダイアログボックスを出して、「処理中です」と表示させ
   たいのですが?。
A. 全ての場合についてできるわけではないですが、
  while ループかなんかで処理をするような場合については
  「秀まるおのマクロサーバ」を使って以下の様な感じで何とかなるんじゃ
   ないでしょうか?

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


  // マクロサーバで常にダイアログを表示させるサンプル
  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;


[ ]