メール内容枠の最大化No.03307
hirahira6014 さん 10/10/22 20:05
 
いつも、一方的にお世話になっております。
個人的に、フォルダを自動作成し、その中にメールを保存する
マクロを作成し、利用しております。

秀丸メール Ver.5.50beta32  から
このマクロを実行後、
対象メールに対して、
「メール内容枠の最大化」が実行されるようになりました。

これを回避するためには、
なにか方策があるでしょうか。

マクロは長く、個人的なものですので、
こちらに全文をペーストできないような状況です。

秀丸エディタ Ver.8.02beta13
秀丸メール Ver.5.50beta32  
HTMLメールViewer Ver.2.05
HmJre.dll Ver.3.36
WindowsVersion Microsoft Windows XP [Version 5.1.2600]  

[ ]
RE:03307 メール内容枠の最大化No.03308
hirahira6014 さん 10/10/22 20:10
 
なにかが起こっていそうな箇所は、
以下の処理をしている部分になります。

//カレントディレクトリセット
    ddeexecute "setcurdir " + $strDir;
    call DBOUT "setcurdir = " + $strDir;

//フォルダ作成
    if(#Iflag && val($strJet)){
        ddeexecute "mkdir /n " + $NameDay2;

    //フォルダ作成に成功したか否か
    //・処理の結果コード(result)
    //  0: 成功
    //  1: 失敗
        ##r1 = val(dderequest("fileopresult"));
       
        if( ##r1==0 ){
            //ディレクトリを書き換え
            writeregstr "ExpDir", $strDir + "\\" + $NameDay2;

            $strtmp = $strDir + "\\" + $NameDay2 + ".txt";
//            changename  $NameDay2;
            call DBOUT "$strtmp999 = " + $strtmp;
        }else{
            //ディレクトリを書き換え
            writeregstr "ExpDir", $strDir;
            message "フォルダ作成に失敗しています。"+ "\x0a" +  $strDir + "
をレジストリに登録しました";
        }

    //カレントディレクトリ問合せ
        $cdir = dderequest("getcurdir");
        if( strlen($cdir) > 0 ) call DBOUT "カレントディレクトリ = " + $cdir;

    //レジストリを閉じて
        closereg;
    }

//秀丸に読み込ませる
    #n = dllfunc("EnvChanged", 1);

//クリックボードにフォルダ名を保存
    beginclipboardread;
   
    setclipboard $NameDay2;

//    call Time_wait 1000;

//名前を付けて保存(秀丸エディタマクロ)
    SAVEAS;

//キャンセルした場合は、終了
    if(result==false)goto LEND;
   
    if( #fcount > 0 ) {
        //添付ファイルがあった場合
//        message "添付ファイルが " + str(#fcount) + " 個ありますよ!保存し
てね";
        #n = dllfunc( "SelectPane", 3);
       
   
//次のV5.13βから、
//
//#n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
//
// って文で「名前を付けて保存」が実行出来るようにします。
//
//#define IDM_ATTACHPANE_UNDOATTACH       40322
//#define IDM_ATTACHPANE_SAVEAS           40323
//#define IDM_ATTACHPANE_RENAME           40324
//#define IDM_ATTACHPANE_IMPORT           40325
//#define IDM_ATTACHPANE_FIND_RENAMED_FILE 40326
//#define IDM_ATTACHPANE_EXPLORER         40327

//ということで、今現在の枠上で「すべて選択」を実行する用の、
//SelectAllInCurrentPaneって関数を追加することにします。
//
//    loaddll "tkinfo.dll";
//    #n = dllfunc("SelectPane", 3);
//    #n = dllfunc("SelectAllInCurrentPane");
//    #n = sendmessage( hidemaruhandle(0), 0x111, 40323, 0 );

//    #n = dllfunc("SelectPane", 3);


        #n = dllfunc("SelectAllInCurrentPane");
        #n = dllfunc("SetAutoPushTimer", 1, "OK" );

//    #n = sendmessage( hidemaruhandle(0), 0x111, 40323, 0 );
//    
//    #n = dllfunc("SetAutoPushTimer", 1, "OK" );

        #n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "" );
        #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
        #n = dllfunc("StopAutoPushTimer");

    }

//メモ処理
    if(#IHattyu){
        #n = dllfunc("SetHeaderForMultiSelect", "X-Memo:", "《済発》");
    }else{
        #n = dllfunc("SetHeaderForMultiSelect", "X-Memo:", "<済>");
    }


//  サーバの終了
    ddeexecute "exit /a";
 

[ ]
RE:03308 メール内容枠の最大化No.03310
秀まるお さん 10/10/22 20:55
 
 こちらで簡単に、

    #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );

 ってマクロを実行した限りでは、たしかに「添付ファイルの保存」が実行され
ました。

 コマンドコードのその「40323」の値も変更してないです。

 メール内容枠の最大化は、

#define IDM_VIEW_MAXIMIZE               40051

 となってまして、例えば

    #n = sendmessage( hidemaruhandle(0), 0x0111, 40051, 0 );

 を実行するとメール内容枠最大化となります。

 他には、メール内容枠のタイトルバーをダブルクリックしたようなメッセージ
が発生すると最大化したりしますけど、他は特にこれといった原因が思いつかな
いです。

 とりあえず、

        #n = dllfunc("SelectAllInCurrentPane");
        #n = dllfunc("SetAutoPushTimer", 1, "OK" );

//    #n = sendmessage( hidemaruhandle(0), 0x111, 40323, 0 );
//    
//    #n = dllfunc("SetAutoPushTimer", 1, "OK" );

        #n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "" );
        #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
        #n = dllfunc("StopAutoPushTimer");

 の部分の直前に

    message "今から添付ファイル保存します。";

 を入れて、StopAutoPushTimerの直後に、

    message "添付ファイル保存しました。";

 とかって文を入れて、それでたしかに添付ファイル保存が実行されてるかどう
か確認していただく作戦はどうでしょ?

 他には、もしかしたらEnvChanged関数呼び出しのタイミングで最大化してるの
かもしれませんけども。それも、そこの前後にmessage文を入れていただくと分
かると思います。

[ ]
RE:03310 メール内容枠の最大化No.03311
hirahira6014 さん 10/10/22 21:01
 
message作戦で確認しました。

//秀丸に読み込ませる
    #n = dllfunc("EnvChanged", 1);

の部分で「メール内容枠の最大化」が発生しました。

わたしのパソコンの設定がおかしいですか?

[ ]
RE:03311 メール内容枠の最大化No.03312
秀まるお さん 10/10/22 23:43
 
 僕の所では、その

//秀丸に読み込ませる
    #n = dllfunc("EnvChanged", 1);

 を実行してもメール内容枠が最大化することは無いんですが、何か、レジスト
リの設定的に最大化してしまうようになってしまってるのですかね。

 実は、EnvChanged関数のヘルプを見ていただくと書いてあるのですけども、
EnvChanged関数のパラメータに1を指定する場合は、レジストリを書き換える前
にSaveConfig関数を呼び出してもらわないといけないルールになっています。な
ので、まずはそれを入れてみて欲しいです。

 具体的には、openreg/writeregstrとかの処理をする前に、

    #n = dllfunc("SaveConfig", 0);

 の1文を入れるだけです。

 それでもダメでしたら、何かバグが潜んでいると思うので、こちらで調べてみ
たい所ですが…。出来たら「設定・設定内容の保存/復元...」で「ウィンドウ位
置やサイズ…」のチェックを必ずONにした上で設定をファイルに保存して、それ
をメールで送っていただけるとバグ再現が簡単になるかもしれないです。送って
いただけるとしたら、"maruo@mitene.or.jp"宛にお願いします。

 あと他に、レジストリの"ViewMax"の値を無理矢理0に書き換えてから
EnvChanged関数呼び出ししていただくと、とりあえず回避出来るかも、と思った
りしました。

[ ]
RE:03312 メール内容枠の最大化No.03316
hirahira6014 さん 10/10/25 13:31
 
> 実は、EnvChanged関数のヘルプを見ていただくと書いてあるのですけども、
>EnvChanged関数のパラメータに1を指定する場合は、レジストリを書き換える前
>にSaveConfig関数を呼び出してもらわないといけないルールになっています。な
>ので、まずはそれを入れてみて欲しいです。
>
> 具体的には、openreg/writeregstrとかの処理をする前に、
>
>    #n = dllfunc("SaveConfig", 0);
>
> の1文を入れるだけです。

ヘルプ確認不足で申し訳ありません。

一文挿入作戦で「メール内容枠の最大化」現象が解消しました。

ありがとうございました。

[ ]