setbackgroundmode文(Ver8.89対応版)
目次− setbackgroundmode文
 setbackgroundmode文は、マクロを非アクティブな状態で実行できるようにします。(V8.89以降)

 setbackgroundmode 1;とすると、バックグラウンドモードが有効になります。
 一度有効にすると、マクロが終了するまでは無効にすることはできません。
 バックグラウンドモードは、マクロ実行中の秀丸エディタが非アクティブな状態になっても、実行中のマクロはその秀丸エディタ上で継続されます。
 openfileやnewfileで新しい秀丸エディタのウィンドウができる場合は、バックグラウンドモードでないときと同じように、新しい秀丸エディタにマクロの実行は切り替わります。

 バックグラウンドモードでは以下の制約があります。
  • アクティブ切り替えは、順番による指定はできません。
    setactivehidemaru 1;で次の秀丸エディタをアクティブ、nexthidemaruで次の秀丸エディタをアクティブなど、順番の指定はできません。
    ウィンドウハンドルを指定して、setactivehidemaru #handle;とすることは可能です。

  • 他の秀丸エディタの情報取得で、順番の指定はできません。
    #a=hidemaruhandle(1);で次の秀丸エディタの情報を得るなど、順番による指定ではできません。
    #a=hidemaruhandle(0);として、自分自身の情報を得ることは可能です。

  • 特定の秀丸エディタの操作が制限される場合があります。
    マクロの実行を開始した秀丸エディタでなくても、setactivehidemaru等でマクロ実行を一度でも切り替えた秀丸エディタは、マクロが終了するまではキー入力などはできないようになります。

  • 検索バッファは個別になります。
できない例
setbackgroundmode 1;
//----
newfile;
setactivehidemaru 1;
できない例を回避する例
setbackgroundmode 1;
//----
#handle = hidemaruhandle(0);
newfile;
setactivehidemaru #handle;
相互にアクティブ切り替えする場合。
Aで実行中にBをアクティブにできますが、Bで入力などはできないようになります。
setbackgroundmode 1;
//----
#a=hidemaruhandle(0);
openfile "/i"; //newfile;
#b=hidemaruhandle(0);
setactivehidemaru #a;
while(1){
  setactivehidemaru #a;
  question "Aでマクロ実行中。[いいえ]で終了。";
  if(result==no) endmacro;
  
  setactivehidemaru #b;
  question "Bでマクロ実行中。[いいえ]で終了。";
  if(result==no) endmacro;
}






戻る