メール本体以外を閉じるマクロNo.06088
styth さん 19/12/30 14:37
 
 「検索して一覧作成」の検索結果のウィンドウは、hidemarucountにカウントさ
れないのでしょうか?
 編集のメール以外と、検索結果のウィンドウを、メール本体を残して、終了さ
せたいのですが、マクロでやりたいと思います。
 よろしくお願いいたします。

[ ]
RE:06088 メール本体以外を閉じるマクロNo.06089
styth さん 19/12/30 14:41
 
> 「検索して一覧作成」の検索結果のウィンドウは、hidemarucountにカウントさ
>れないのでしょうか?
> 編集のメール以外と、検索結果のウィンドウを、メール本体を残して、終了さ
編集中のメール以外と、検索結果のウィンドウを、メール本体を残して、終了させた
い、

でした。

[ ]
RE:06089 メール本体以外を閉じるマクロNo.06092
秀まるお2 さん 19/12/31 17:32
 
 マクロ作ってみました。
 編集が許可されてるウィンドウはすべてそのまま残ります。もしも「編集は許可さ
れてるけどまだ何も入力してないウィンドウは自動で閉じて欲しい」ってことでした
ら、「readonly」の判定の所を

            } else if( ! updated ) {

 のように書き換えればいいです。

---------------------------------------------------------------------------
    loaddll "tkinfo.dll";
    #n = dllfunc("CloseGrepWnd", 1);
    #count = hidemarucount;
    if( #count > 1 ) {
        #closecount = 0;
        #main = dllfunc("MainWnd");
        #i = 1;
        setactivehidemaru hidemaruhandle(1);
        while( #i < #count ) {
            if( hidemaruhandle(0) == #main ) {
                //ここには来ないはず。念のため。
            } else if( readonly ) {
                //閉じる
                #wantclose[#closecount] = hidemaruhandle(0);
                #closecount = #closecount + 1;
            }
            #i = #i + 1;
            nexthidemaru;
        }
        setactivehidemaru #main;
        while( #closecount > 0 ) {
            #closecount = #closecount - 1;
            closehidemaru #wantclose[#closecount];
        }
    }

[ ]
RE:06092 メール本体以外を閉じるマクロNo.06095
styth さん 20/01/02 10:05
 
> マクロ作ってみました。
> 編集が許可されてるウィンドウはすべてそのまま残ります。もしも「編集は許可
>されてるけどまだ何も入力してないウィンドウは自動で閉じて欲しい」ってことで
>したら、「readonly」の判定の所を
>            } else if( ! updated ) {
> のように書き換えればいいです。
 ありがとうございます。
 こっちを使わさせていただきました。
 ところで、編集中のエディタ(ウィンドウ)上でも、実行できるようにしたい
のですが、できますか?

「編集は許可されてるけどまだ何も入力してないウィンドウは自動で閉じて欲し
い」
 メール本体は閉じない。

 ということで、お願いいたします。

[ ]
RE:06095 メール本体以外を閉じるマクロNo.06096
styth さん 20/01/02 11:34
 
 #n = dllfunc( "SetMainWndTop" );
 を、2行目に追加したら、できました。

 ところで、
 ツールバーボタンにこのマクロを登録しておいて、メール本体しかないときは、
メール本体も閉じるようにしたいのですが、できますか?

 最初の質問に戻りますが、「検索して一覧作成」の検索結果のウィンドウは、
hidemarucountにカウントされないのでしょうか?

 hidemarucountが1なら、本体を閉じる。
 じゃ、ないときは、「検索して一覧作成」の検索結果のウィンドウを閉じる。
 としたいのですが、「検索して一覧作成」の検索結果のウィンドウがあっても、
hidemarucountは1なのでうまくいきません。
 よろしくお願いいたします。

[ ]
RE:06096 メール本体以外を閉じるマクロNo.06098
秀まるお2 さん 20/01/02 14:26
 
>  最初の質問に戻りますが、「検索して一覧作成」の検索結果のウィンドウは、
> hidemarucountにカウントされないのでしょうか?

 検索結果の一覧にも秀丸エディタ相当ウィンドウが存在したりしなかったり不確定
な面があるんですが、テストしてみた所では、

 − 秀丸メール本体ウィンドウまたはエディタ・ウィンドウ上でマクロ
   実行した場合は、hidemarucountに検索結果は含まれない。
 − 検索結果のウィンドウ上でマクロ実行した場合は、検索結果のウィンドウ
   の中にある秀丸エディタ相当ウィンドウも含まれてしまう。

 ということになってしまってるようです。

    loaddll "tkinfo.dll";
    #count = hidemarucount;
    message str(#count);

 のようなマクロをいろんな場面で実行して結果を確認していただくのが間違いない
と思います。

>  hidemarucountが1なら、本体を閉じる。
>  じゃ、ないときは、「検索して一覧作成」の検索結果のウィンドウを閉じる。
>  としたいのですが、「検索して一覧作成」の検索結果のウィンドウがあっても、
> hidemarucountは1なのでうまくいきません。

 検索結果のウィンドウが存在してるかどうかは、

    #grep = dllfunc("GrepWnd");
    if( #grep != 0 ) {
        //検索結果が存在する場合の処理
    } else {
        //検索結果が無い場合の処理
        if( hidemarucount == 1 ) {
            #n = dllfunc("Exit");
            endmacro;
        }
    }
    // 06092番発言のマクロ
    ...
    ///

 みたいな感じで実現できるんじゃないかと思います。

[ ]