【要望】ウィンドウサイズの復元機能につNo.03345
TATE2 さん 12/08/20 08:36
 
秀まるおさん

ご無沙汰しています。
TATEです。

環境も変わりメインマシンはWindows7になりましたが、メール
ソフトは秀丸メールとしてデータや設定をWindowsXPから移行
し、無事使用できています。
(一部、マクロ設定が手間取りましたが。。)

ここで1つ要望なのですが、Windows7はワイド画面なのですが
表示を外部出力(例えばXGAのプロジェクター等)に切り替えて
また元に戻すと、ディスクトップのアイコンや秀丸メールの
ウィンドウサイズが変わっていて、毎回手直しをしている状況
なので、できればワンクリックで記憶していたサイズ(設定値)
に復元する機能があれば便利と考えています。


手の空いたときにでもご検討いただけると幸いです。

もし、他の方法や機能で対応できるのであれば、保留として
ください。


よろしくお願いします。




[ ]
RE:03345 【要望】ウィンドウサイズの復元No.03346
秀まるお さん 12/08/20 11:22
 
 マルチディスプレイ環境からシングルディスプレイ環境になった時に、もしも
秀丸メールのウィンドウが画面外になってしまった場合、自動的にウィンドウ位
置を画面内にリセットするような処理が働いてしまいます。

 マルチディスプレイの環境毎にウィンドウ位置を多次元で覚えておくようにし
たらいいのかなぁと思いますけども、現状そこまで考えてないです。

> なので、できればワンクリックで記憶していたサイズ(設定値)
> に復元する機能があれば便利と考えています。

 秀丸エディタでのデスクトップ保存/復元みたいな機能があったらいいのかも
しれません。または現状でもマクロでなんとか出来るかもしれません。

 何かいい作戦が無いか考えてみます。

[ ]
RE:03346 【要望】ウィンドウサイズの復元No.03347
TATE2 さん 12/08/21 07:50
 
TATEです。

ご検討ありがとうございます。

ウィンドウ位置は問題ない範囲ですが、横幅のサイズが小さく
なったりするので、サイズだけでも覚えられたらと思います。



[ ]
RE:03347 【要望】ウィンドウサイズの復元No.03348
秀まるお さん 12/08/21 17:18
 
 とりあえず、秀丸エディタの「デスクトップ保存/デスクトップ復元」相当の
ことをするマクロだけ作ってみました。

 名前を付けて保存するのも必要でしたらまた連絡ください。

// HidemaruMail_SaveRestoreDesktop.mac
// デスクトップ保存/デスクトップ復元をする用のマクロ。
// 2012.08.21 by 斉藤秀夫
//
// このマクロの中の処理は適当に流用していただいてかまいません。
//
 $key[0] = "xFrame";
 $key[1] = "yFrame";
 $key[2] = "cxFrame";
 $key[3] = "cyFrame";
 $key[4] = "xRecv";
 $key[5] = "yRecv";
 $key[6] = "xOuter0";
 $key[7] = "yOuter0";
 $key[8] = "xOuter1";
 $key[9] = "yOuter1";
 $key[10] = "xOuter2";
 $key[11] = "yOuter2";
 $key[12] = "xOuter3";
 $key[13] = "yOuter3";
 $key[14] = "cxOuter";
 $key[15] = "cyOuter";
 $key[16] = "cxOpen";
 $key[17] = "cyOpen";
 $key[18] = "cxAttach";
 $key[19] = "xNotify";
 $key[20] = "yNotify";
 $key[21] = "xGrep";
 $key[22] = "yGrep";
 $key[23] = "cxGrep";
 $key[24] = "cyGrep";
 $key[25] = "xRemote";
 $key[26] = "yRemote";
 $key[27] = "cxRemote";
 $key[28] = "cyRemote";
 $key[29] = "xBook";
 $key[30] = "yBook";
 $key[31] = "cxBook";
 $key[32] = "cyBook";

 #keycount = 33;

 $inifile = macrodir + "\\HidemaruMail_SaveRestoreDesktop.ini";
 menu "デスクトップ復元(&R)", "デスクトップ保存(&S)";
 #menu = result;
 if( #menu == 0 ) {
  endmacro;
 }

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

 #i = 0;
 openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
 while( #i < #keycount ) {
  if( #menu == 1 ) {
   //デスクトップ復元
   #xy = getininum( $inifile, "0", $key[#i] );
   writeregnum $key[#i], #xy;
  } else if( #menu == 2 ) {
   //デスクトップ保存
   #xy = getregnum( $key[#i] );
   writeininum $inifile, "0", $key[#i], #xy;
  }
  #i = #i + 1;
 }
 closereg;
 if( #menu == 1 ) {
  //デスクトップ復元
  loaddll "tkinfo.dll";
  #n = dllfunc("EnvChanged", 1);
 }

[ ]
RE:03348 【要望】ウィンドウサイズの復元No.03349
秀まるお さん 12/08/21 18:03
 
 やっぱりちょっと不完全みたいです。もっとちゃんとしたマクロにしようと思
ったんですが、なかなか難しいです。

 ちょっと深追いしてると他の仕事が出来なくなってしまうので、やっぱりこの
件はこの辺で中断させていただきます。

[ ]
RE:03349 【要望】ウィンドウサイズの復元No.03350
TATE2 さん 12/08/22 10:28
 
TATEです。

ご多忙の折、ご対応いただきありがとうございました。
一筋縄ではいかない旨、承知しました。

マルチディスプレイ時にする前に、何か工夫することで
うまくいかないかトライしています。


[ ]
RE:03350 【要望】ウィンドウサイズの復元No.03351
秀まるお さん 12/08/22 14:50
 
 ウィンドウ位置を復元するのにどうしても秀丸メールを再起動する必要があっ
て、マクロも、秀丸エディタにその辺やらせるようにしました。

 それで一応うまくいくようになったと思います。

 秀丸エディタと秀丸メールの両方がインストールされてないと動かないですけ
ども、よかったらこれで試してみて欲しいです。2通り保存/復元出来るように
しました。

 ライブラリにもアップロードしようかなぁと思います。


// HidemaruMail_SaveRestoreDesktop.mac
// デスクトップ保存/デスクトップ復元をする用のマクロ。
// 2012.08.21 by 斉藤秀夫
//
    $key[0] = "xFrame";
    $key[1] = "yFrame";
    $key[2] = "cxFrame";
    $key[3] = "cyFrame";
    $key[4] = "xRecv";
    $key[5] = "yRecv";
    $key[6] = "xOuter0";
    $key[7] = "yOuter0";
    $key[8] = "xOuter1";
    $key[9] = "yOuter1";
    $key[10] = "xOuter2";
    $key[11] = "yOuter2";
    $key[12] = "xOuter3";
    $key[13] = "yOuter3";
    $key[14] = "cxOuter";
    $key[15] = "cyOuter";
    $key[16] = "cxOpen";
    $key[17] = "cyOpen";
    $key[18] = "cxAttach";
    $key[19] = "xNotify";
    $key[20] = "yNotify";
    $key[21] = "xGrep";
    $key[22] = "yGrep";
    $key[23] = "cxGrep";
    $key[24] = "cyGrep";
    $key[25] = "xRemote";
    $key[26] = "yRemote";
    $key[27] = "cxRemote";
    $key[28] = "cyRemote";
    $key[29] = "xBook";
    $key[30] = "yBook";
    $key[31] = "cxBook";
    $key[32] = "cyBook";

    #keycount = 33;

    openreg "LOCALMACHINE"
        , "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Hidemaru";
    if( ! result ) {
        message "秀丸エディタがインストールされてないか、または32bit版" +
                "/64bit版の種類の違うバージョンがインストールされています。";
        endmacro;
    }
    $hidemaruexe = getregstr( "InstallLocation" ) + "\\hidemaru.exe";
    closereg;

    openreg "LOCALMACHINE"
        , "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\TuruKame";
    if( ! result ) {
        message "秀丸メールがインストールされてないか、または32bit版/64" +
                "bit版の種類の違うバージョンがインストールされています。";
        endmacro;
    }
    $turukameexe = getregstr( "InstallLocation" ) + "\\turukame.exe";
    closereg;

    $inifile = macrodir + "\\HidemaruMail_SaveRestoreDesktop.ini";

    #savedesktop = 0;
    $section = "1";
    if( argcount > 0 ) {
        $section = getarg(0);
        if( $section == "" ) {
            $section = "1";
        }
    }

    loaddll "tkinfo.dll";
    if( result ) {
        if( dllfunc("IsHidemaruMail") ) {
            //秀丸メール上の場合
            menu "デスクトップ復元 - 1", "デスクトップ復元 - 2"
                , "\x01"
                , "デスクトップ保存 - 1", "デスクトップ保存 - 2";
            #menu = result;
            if( #menu == 0 ) {
                endmacro;
            }
            if( #menu == 1 ) {
                #savedesktop = 0;
                $section = "1";
            } else if( #menu == 2 ) {
                #savedesktop = 0;
                $section = "2";
            } else if( #menu == 4 ) {
                question "現在のウィンドウ位置を「1」に保存します。" +
                        "よろしいですか?";
                if( result != yes ) {
                    endmacro;
                }
                #savedesktop = 1;
                $section = "1";
            } else /*if( #menu == 5 )*/ {
                question "現在のウィンドウ位置を「2」に保存します。" +
                        "よろしいですか?";
                if( result != yes ) {
                    endmacro;
                }
                #savedesktop = 1;
                $section = "2";
            }
            if( #savedesktop != 0 ) {   //デスクトップ保存
                #n = dllfunc("SaveConfig", 1);
                goto Label_SaveRestoreDesktop;
            }
            //デスクトップ復元の場合は秀丸を起動してそこで実行する。
            run "\"" + $hidemaruexe + "\" /x \"" + currentmacrofilename
                     + "\" /a" + $section;
            endmacro;
        }
    }

Label_SaveRestoreDesktop:

    if( #savedesktop == 0 ) {
        #handle = findwindowclass("TuruKameFrame");
        if( #handle != 0 ) {
            question "秀丸メールを再起動します。よろしいですか?";
            if( result != yes ) {
                endmacro;
            }
Label_RetryTermination: ;
            #n = sendmessage( #handle, 0x111, 40244, 0 );
                    //常駐秀丸メールも含めてすべて終了
            #tick = tickcount;
            while(1) {
                #handle = findwindowclass("TuruKameFrame");
                if( #handle == 0 ) {
                    break;
                }
                if( tickcount - #tick >= 2000 ) {
                    break;
                }
                sleep 100;
            }
            if( #handle != 0 ) {
                question "秀丸メールが終了していません。再試行しますか?";
                if( result != yes ) {
                    endmacro;
                }
                goto Label_RetryTermination;
            }
        }
    }

    #i = 0;
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    while( #i < #keycount ) {
        if( #savedesktop == 0 ) {
            //デスクトップ復元
            #xy = getininum( $inifile, $section, $key[#i] );
            writeregnum $key[#i], #xy;
        } else {
            //デスクトップ保存
            #xy = getregnum( $key[#i] );
            writeininum $inifile, $section, $key[#i], #xy;
        }
        #i = #i + 1;
    }
    closereg;
    if( #savedesktop == 0 ) {
        run $turukameexe;
        quit;
    }

[ ]
RE:03351 【要望】ウィンドウサイズの復元No.03352
TATE2 さん 12/08/22 17:17
 
TATEです。

 マクロのご提供ありがとうございました。
 うまく動作しました。
 やはり元あった位置、大きさに瞬時に復元できるのは
 嬉しいです。
 
 また、これを使えば他にも応用ができそうです。
 ありがとうございました。


[ ]