[ 新規に投稿する ]

最小化したファイルに書き込むNo.10211
おすぎ さん 23/10/17 17:15 [ コメントを投稿する ]
お世話になってます。

最小化したファイルを開いて、書き込んで、また最小化したいと思っています。最小化したファイルを開くには、どうすれば良いのでしょうか?

openfile だと「他の秀丸エディタで使用中です」のメッセージが出るような気がします。
setactivehidemaru だと、ファイルは開いていないので、handleが取得できません。

初歩的な質問だと思うのですが、教えていただけますと助かります。
よろしくお願いします。
[ ]
RE:10211 最小化したファイルに書き込むNo.10212
秀丸担当 さん 23/10/18 09:47 [ コメントを投稿する ]
  同じファイルを開こうとしたときの動作は、[その他]→[動作環境]→[ファイル]→[排他制御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;
[ ]
RE:10212 最小化したファイルに書き込むNo.10213
おすぎ さん 23/10/18 10:44 [ コメントを投稿する ]
  ありがとうございます。

いろいろな方法があるのですね。勉強になります。

それにしても、秀丸はワードに負けず劣らず深いですね。
[ ]

[ 新規に投稿する ]