setbackgroundmode文(Ver9.50対応版)
目次−
setbackgroundmode文
setbackgroundmode文は、マクロを非アクティブな状態で実行できるようにします。(V8.89以降)
setbackgroundmode 1;とすると、バックグラウンドモードが有効になります。
setbackgroundmodeの主な目的は、setactivehidemaru等で2つの秀丸エディタを切り替えながら実行するマクロがあると、ウィンドウが前面に来てしまうことを防ぐためにあります。
例えば以下のマクロだと、非タブモードでウィンドウが2つある場合に前面に来てしまい、他のアプリの操作や、手動起動で操作する秀丸エディタの操作が困難ですが、setbackgroundmode 1;をすると前面に来ないようになります。
ウィンドウを切り替えながら実行するマクロの例 | 
setbackgroundmode 1;
//----
if(tabmode!=0){
  message "タブモードOFFで実行してください。";
  endmacro;
}
newfile;
#a=hidemaruhandle(0);
newfile;
#b=hidemaruhandle(0);
setactivehidemaru #a;
while(1){
  setactivehidemaru #a;
  insert "Aです\n";
  setactivehidemaru #b;
  insert "Bです\n";
}
endmacro;
 | 
一度有効にすると、マクロが終了するまでは無効にすることはできません。
バックグラウンドモードは、マクロ実行中の秀丸エディタが非アクティブな状態になっても、実行中のマクロはその秀丸エディタ上で継続されます。
openfileやnewfileで新しい秀丸エディタのウィンドウができる場合は、バックグラウンドモードでないときと同じように、新しい秀丸エディタにマクロの実行は切り替わります。
バックグラウンドモードでは以下の制約があります。
	- アクティブ切り替えは、順番による指定はできません。
	setactivehidemaru 1;で次の秀丸エディタをアクティブ、nexthidemaruで次の秀丸エディタをアクティブなど、順番の指定はできません。
	ウィンドウハンドルを指定して、setactivehidemaru #handle;とすることは可能です。
できない例 | 
setbackgroundmode 1;
//----
newfile;
setactivehidemaru 1;
 
 | 
できない例を回避する例 | 
setbackgroundmode 1;
//----
#handle = hidemaruhandle(0);
newfile;
setactivehidemaru #handle;
 
 | 
	
	 - 他の秀丸エディタの情報取得で、順番の指定はできません。
	#a=hidemaruhandle(1);で次の秀丸エディタの情報を得るなど、順番による指定ではできません。
	#a=hidemaruhandle(0);として、自分自身の情報を得ることは可能です。
	
	 - 特定の秀丸エディタの操作が制限される場合があります。
	マクロの実行を開始した秀丸エディタでなくても、setactivehidemaru等でマクロ実行を一度でも切り替えた秀丸エディタは、マクロが終了するまではキー入力などはできないようになります。
	
	 - 検索バッファは個別になります。
 
参照:
 
影響の及ぶ範囲(execmacro)
 影響の及ぶ範囲(アクティブ切り替え)