秀丸メールの本体以外をすべて閉じるにはNo.44225
styth さん 13/03/16 07:53
 
 秀丸メールの本体以外をすべて閉じるコマンドのはないでしょうか?
 なければ、マクロでもかみません。
 できれば、ヘルプも閉じたいです。
 よろしくお願いします。

[ ]
RE:44225 秀丸メールの本体以外をすべて閉No.44226
秀まるお2 さん 13/03/16 17:46
 
 そういうコマンドは無いのでマクロを作ってみました。

    #wnd = findwindow("秀丸メール ヘルプ");
    if( #wnd != 0 ) {
        #n = sendmessage( #wnd, 0x0010, 0, 0 );
    }
    while( hidemarucount > 1 ) {
        #wnd = hidemaruhandle(1);
        if( #wnd == -1 || #wnd == 0 ) {
            break;
        }
        if( updated[1] ) {
            break;
        }
        #n = sendmessage( #wnd, 0x0010, 0, 0 );
        if( hidemaruhandle(1) == #wnd ) {
            //終了してない
            break;
        }
    }

 編集中のメールがあるとマクロが中断するようにしています。

[ ]
RE:44226 秀丸メールの本体以外をすべて閉No.44227
styth さん 13/03/16 18:09
 
 うまく行きました。ありがとうございます。ところで、

#wnd = findwindow("秀丸メール マクロヘルプ");
if( #wnd != 0 ) {
 #n = sendmessage( #wnd, 0x0010, 0, 0 );
}

 上記を追加しましたが、秀丸メール マクロヘルプが閉じません。
 どう直せば良いか、教えて下さい。
 よろしくお願いします。

[ ]
RE:44227 秀丸メールの本体以外をすべて閉No.44228
秀まるお2 さん 13/03/16 18:29
 
 調べてみたら、区切りの空白が全角になってるようです。

    #wnd = findwindow("秀丸メール マクロヘルプ");
    if( #wnd != 0 ) {
        #n = sendmessage( #wnd, 0x0010, 0, 0 );
    }

 だとうまくいきました。

[ ]
RE:44228 秀丸メールの本体以外をすべて閉No.45074
styth さん 13/10/07 15:37
 
「検索して一覧作成」の結果のウィンドも閉じたいのですが、どう直せば良いか
教えて下さい。
よろしくお願いします。

[ ]
RE:45074 秀丸メールの本体以外をすべて閉No.45077
秀まるお2 さん 13/10/07 19:30
 
 検索結果のウィンドウを閉じる用の関数があるのですが、1回呼び出しで1個
しか閉じないので、最高4つ閉じる用には4回呼び出さないとだめなようです。

    loaddll "tkinfo.dll";
    #n = dllfunc("CloseGrepWnd");
    #n = dllfunc("CloseGrepWnd");
    #n = dllfunc("CloseGrepWnd");
    #n = dllfunc("CloseGrepWnd");

 でうまく閉じました。

[ ]
RE:45077 秀丸メールの本体以外をすべて閉No.45083
styth さん 13/10/08 07:57
 
> 検索結果のウィンドウを閉じる用の関数があるのですが、1回呼び出しで1個
 検索結果のウィンドウの数を知る方法はないのでしょうか?

[ ]
RE:45083 秀丸メールの本体以外をすべて閉No.45085
秀まるお2 さん 13/10/08 10:13
 
 検索結果を閉じるマクロですが、実はCloseGrepWndにパラメータがあって、そ
れに1を指定すれば全部まとめて閉じることができました。

    loaddll "tkinfo.dll";
    #n = dllfunc("CloseGrepWnd", 1);

 でいけました。自分もヘルプをよく読んでませんでした。

 それと、検索結果を閉じるマクロは、「検索して一覧作成」を実行している最
中だとうまく動かないです。

>  検索結果のウィンドウの数を知る方法はないのでしょうか?

 検索結果ウィンドウの数を返す関数は用意してないのですが、tkinfo.dllに
WindowsのAPIをそのままバイパスする用の関数がいろいろあるので、それを組み
合わせれば一応可能ではあります。

 (正直そんなマクロは僕でしか作成できないですけども)

    loaddll "tkinfo.dll";
    #count = 0;
    #wnd = dllfunc("GrepWnd");
    if( #wnd != 0 ) {
        #count = 1;
        while(1) {
            #wnd = dllfunc("Bypass_FindWindowEx", 0, #wnd, "#32770", 0 );
            if( #wnd == 0 ) {
                break;
            }
            $title = dllfuncstr("Bypass_GetWindowText", #wnd);
            if( leftstr( $title, 11) == "検索結果 - "
             || leftstr( $title, 13) == "新着リスト - " ) {
                #count = #count + 1;
            }
        }
    }
    message "検索結果のウィンドウ個数 = " + str(#count);

 上記のマクロだと、もしかしてウィンドウタイトルが"検索結果 - "で始まる
ダイアログボックスをほかのアプリケーションソフトが出してるとそれもカウン
トしてしまう可能性がありますが、実用上は問題ないと思います。

 正確に判断させる必要があるのでしたら、別途、専用の関数を追加してもいい
です。

[ ]
RE:45085 秀丸メールの本体以外をすべて閉No.45086
styth さん 13/10/08 10:52
 
> 検索結果を閉じるマクロですが、実はCloseGrepWndにパラメータがあって、そ
>れに1を指定すれば全部まとめて閉じることができました。
>    loaddll "tkinfo.dll";
>    #n = dllfunc("CloseGrepWnd", 1);
 うまく行きました。ありがとうございます。

> 上記のマクロだと、もしかしてウィンドウタイトルが"検索結果 - "で始まる
>ダイアログボックスをほかのアプリケーションソフトが出してるとそれもカウン
>トしてしまう可能性がありますが、実用上は問題ないと思います。
> 正確に判断させる必要があるのでしたら、別途、専用の関数を追加してもいい
>です。
 上記マクロで十分です。ありがとうございます。

[ ]
RE:45086 秀丸メールの本体以外をすべて閉No.46015
styth さん 14/04/16 10:48
 
 上記マクロ実行時、新規のメールも閉じたいのですが、上記マクロをどう直せ
ば良いんでしょうか?
 よろしくお願いします。


[ ]
RE:46015 秀丸メールの本体以外をすべて閉No.46023
秀まるお2 さん 14/04/16 13:53
 
 新規メールのうち、まだ何も編集してない物だけ閉じるとしたら、例えば以下
のマクロで可能です。

    loaddll "tkinfo.dll";
    #i = 1;
    while( #i < hidemarucount ) {
        #handle = hidemaruhandle(#i);
        if( !updated[#handle] ) {
            #type = dllfunc("ExecAt", #handle, "MailType");
            if( #type == 0          //新規メール
             ) {
                closehidemaru #handle;
                continue;
            }
        }
        #i = #i + 1;
    }

 更新ありのウィンドウでもかまわず終了させる、あるいは更新ありの物は草稿
フォルダに保存して終了させるとか、そういうこともやれば出来ます。

[ ]
RE:46023 秀丸メールの本体以外をすべて閉No.46064
styth さん 14/04/20 20:54
 
 うまく行きました。ありがとうございます。

[ ]