|
同じファイルを開こうとしたときの動作は、[その他]→[動作環境]→[ファイル]→
[排他制御1]のところにあって、この指定によって違います。
既定の設定では、排他制御は[しない]、と、[開く方法を問い合わせする]になってい
ます。
これによって、操作を選択するダイアログが出ます。
[同じファイルを2つ開くことを禁止する]になっていると、開いていないときは開き、
既に開いているときはアクティブが変わるだけになります。
これはopenfileにも影響があります。
設定の影響を受けさせずに一定の動作にする方法が幾つかあります。
●setcompatiblemodeを使う方法
以下のようにすると、動作環境に関わらず、常に一定の動作になります。
setcompatiblemode 0x00000030; //マクロ内では[同じファイルを2つ開くことを
禁止する]として動作
openfile @"c:\xxx\yyy.txt";
endmacro;
●起動オプション/m3を使う方法
他には、起動オプション/m3を使って[同じファイルを2つ開くことを禁止する]を明
示的に指示する方法もあります。
マクロでなく外部から起動するときは
hidemaru.exe /m3 c:\xxx\yyy.txt
としたり、マクロでは
openfile @"/m3 c:\xxx\yyy.txt";
のように使えます。
●findhidemaruを使う方法
以前からある方法としては、findhidemaruを使ってプログラム的に処理できます。
$f=@"c:\xxx\yyy.txt";
#h= findhidemaru( $f );
if(#h == -1 ) {
openfile $f; //なかったら開く
} else {
setactivehidemaru #h; //あったらアクティブ
}
endmacro;
●タブモードや最小化が伴う場合
最小化はshowwindow 2;でできますが、タブモードの場合、ウィンドウが最小化する
ので都合が悪い場合があります。
マクロヘルプの[秀丸エディタ管理(タブ編)]で細かく制御する方法もありますが、起
動オプション/iで分離して使うのが手っ取り早いです。
いろいろ書きましたが、まとめると、以下のようにするのが簡単です。
$f=@"c:\xxx\yyy.txt";
openfile "/i /m3 "+$f; //設定に関わらず無かったら開く、あったらアクティブ、
タブモードなら分離
endmacro;
|
|