←前へ 次へ→ 機能別Q&A 質問番号順Q&A 秀丸エディタQ&A集トップ

[HMM0058A]

●setactivehidemaru 文の引数

Q. setactivehidemaru 文を使って編集ウィンドウを切り替えたいのですが、使い方がよく分かりません。

A. setactivehidemaru 文には秀丸ウィンドウの「番号」か「ウィンドウハンドル」を指定します。

[解説]

  1. ウィンドウ番号
    秀丸ウィンドウの「番号」とは、秀丸のウィンドウを画面手前から順に数えた番号になっています(一番手前が 0 です)。ファイル名からウィンドウ番号を取得するには findhidemaru() 関数を使います。
    //------- サンプルマクロ1 -------//
    // "c:\\hidemaru\\install.txt" のウィンドウ番号を取得する
    $file = "c:\\hidemaru\\install.txt";
    #h_order = findhidemaru($file);
    message $file + " のウィンドウ番号は " +
    str(#h_order) + " です。";
    if( #h_order != -1 ) setactivehidemaru #h_order; //切り替え
    endmacro;
    // ---------------------------- //
    ※ ファイルが開かれていない場合は、ウィンドウ番号は -1 になります。

  2. ウィンドウハンドル
    1. で説明したウィンドウ番号は、setactivehidemaru を繰り返し使用してウィンドウの切り替えを行うと変化してしまいます。いちいち findhidemaru() 関数を使ってウィンドウ番号を取得してもいいのですが、「ウィンドウハンドル」を取得しておけば(ウィンドウを閉じない限り)そのウィンドウを一発で指定できます。
    //------- サンプルマクロ2 -------//
    // "c:\\hidemaru\\install.txt" のウィンドウハンドルを取得する
    $file = "c:\\hidemaru\\install.txt";
    #h_wnd = hidemaruhandle(findhidemaru($file));
    message $file + " のウィンドウハンドルは " +
    str(#h_wnd) + " です。";
    if( #h_wnd != 0 ) setactivehidemaru #h_wnd; //切り替え
    endmacro;
    // ---------------------------- //
    ※ hidemaruhandle() 関数の引数にはハンドルを取得したいウィンドウのウィンドウ番号を指定します。ウィンドウが存在しない場合(ウィンドウ番号が -1 の場合)、hidemaruhandle() 関数は 0 を返します。

  3. findhidemaru() 関数を使う場合の注意点
    findhidemaru() 関数の引数にアクティブウィンドウ(ウィンドウ番号 0)のファイル名を指定した場合も(ウィンドウが存在しない時と同様に) -1 を返すため、上記のサンプルマクロを c:\hidemaru\install.txt 上で実行すると「c:\hidemaru\install.txt のウィンドウ番号は -1 (ウィンドウハンドルは 0)です。」と嘘(^^;を言われてしまいます。
    例えばアクティブウィンドウのウィンドウハンドルを取得したい場合は、
    #hwnd_act = hidemaruhandle(findhidemaru(filename));
    ※ filename には現在のウィンドウのファイル名が入る
    (「●「キーワード」とは?」を参照して下さい)。
    ではなく
    #hwnd_act = hidemaruhandle( 0 );
    と指定しなければ正しく動作しません。

←前へ 次へ→ 機能別Q&A 質問番号順Q&A 秀丸エディタQ&A集トップ