setbackgroundmode文(Ver9.35対応版)
目次−
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)
影響の及ぶ範囲(アクティブ切り替え)