SetAutoPushTimerEverについてNo.35291
hirahira さん 09/01/06 18:43
 
hirahiraです。
いつも一方的にお世話になっております。
ありがとうございます。

受信メール、送信メールを所定のディレクトリに
保存するマクロを作成し、
使用していますが、このたび、
ヘルプファイルにSetAutoPushTimerEver
なるものを発見しました。

この関数で、添付ファイル保存時に表示されるダイアログの
保存(s)ボタンも自動化されるかと
やってみましたが、うまくいきません。

#n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "yes");
                                                        ~~~~~
#n = dllfunc("StopAutoPushTimer");

この関数では、OKとか、YESのようなボタンしか押せないのでしょうか。


[ ]
RE:35291 SetAutoPushTimerEverについてNo.35292
hirahira さん 09/01/06 18:45
 
波線が変なところに付いてしまいました。

yesの下に付けたかったのですが。。。

[ ]
RE:35292 SetAutoPushTimerEverについてNo.35295
秀まるお2 さん 09/01/06 21:23
 
 Spy++ってソフトを使って調べてみたら、添付ファイル保存のダイアログボッ
クスにある「保存(S)」のボタンのIDは、1でした。

 1というのは、一般のメッセージボックスでの「OK」ボタンと同じです。

 ちなみに「はい」ボタンのIDは6です。

 それで、一応ですが、SetAutoPushTimerEverにて、ボタンの名前として"OK"を
指定すればうまくいと思います。

 僕の所では、とりあえずテストとして以下のマクロをやってみたらうまく動き
ました。

    loaddll "tkinfo.dll";
    #n = dllfunc("SetAutoPushTimer", 1, "OK" );
    #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
    message "A";
    endmacro;

 ちなみに40323というのは添付ファイルの上のマウス右ボタンメニューで「添
付ファイルの保存...」コマンドを実行した時のコマンドコードです。

[ ]
RE:35295 SetAutoPushTimerEverについてNo.35299
hirahira さん 09/01/07 14:24
 
秀まるお2様、お手数をおかけしました。
教えていただいたとおり、記述したところ、うまくいきました。

そのあとの「ファイルを保存しました」ウインドウも自動で
閉じられるかと、やってみました。

SPY++はないので、それに似たものをネットで探してWinIDなるもので
IDを調べたら、「閉じる」はID2とでたので、
以下のように記述しました。

結論、うまくいきませんでしたが、このウインドウは、
保存確認の意味もあるので、自動化をあきらめます。

教えていただいてありがとうございました。

    call sub_tkinfo;

    if( #fcount > 0 ) {
    #n = dllfunc( "SelectPane", 3);
       
    #n = dllfunc("SelectAllInCurrentPane");
    #n = dllfunc("SetAutoPushTimer", 1, "OK" );

    #n = sendmessage( hidemaruhandle(0), 0x111, 40323, 0 );
   
    //#n = dllfunc("SetAutoPushTimer", 2, "OK" );
    #n = dllfunc("StopAutoPushTimer");
   
    //message "A";

    }

[ ]
RE:35299 SetAutoPushTimerEverについてNo.35300
秀まるお2 さん 09/01/07 14:46
 
 ちなみにですけど、SetAutoPushTimerのパラメータのボタン名に""を指定した
場合はデフォルトのボタンを押す機能があるんですけど、それがなぜか「名前を
付けて保存」ダイアログボックスではうまく機能しないようです。

 それはそれで修正させていただきます。でもどっちにしても「保存(S)」ボタ
ンを押してから「閉じる」ボタンを連続で押させることは出来ませんでした。

 それと、保存後の確認メッセージは、保存のダイアログボックスの左下にある
「保存後に確認する」のチェックボックスをOFFにすれば出てこなくなります。
 これをマクロでOFFに書き換えることも一応可能ですが…。僕にしかやり方は
分からないですけど、もし必要ならやり方連絡差し上げます。

[ ]
RE:35300 SetAutoPushTimerEverについてNo.35301
hirahira さん 09/01/07 15:08
 
>でもどっちにしても「保存(S)」ボタ
>ンを押してから「閉じる」ボタンを連続で押させることは出来ませんでした。
了解いたしました。

> それと、保存後の確認メッセージは、保存のダイアログボックスの左下にある
>「保存後に確認する」のチェックボックスをOFFにすれば出てこなくなります。
> これをマクロでOFFに書き換えることも一応可能ですが…。僕にしかやり方は
>分からないですけど、もし必要ならやり方連絡差し上げます。
あまり、難しい方法でなければ、試してみたいと思います。
ご教示いただければ、幸いです。
よろしくお願いいたします。

[ ]
RE:35301 SetAutoPushTimerEverについてNo.35302
秀まるお2 さん 09/01/07 15:23
 
 っと思ったんですが、実はSetAutoPushTimerEverがデフォルトボタンを連続し
て押してくれない方が悪いと思いまして、そっちの方を直してしまいました。

 次にアップロード予定の秀丸メール(V5.15)にて、

    loaddll "tkinfo.dll";
    #n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "" );
    #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
    #n = dllfunc("StopAutoPushTimer");
    endmacro;

 ってマクロでボタンを一気に押して動作するようになります。それでお願いし
ます。

> あまり、難しい方法でなければ、試してみたいと思います。

 しいてこっちの作戦でやるとしたらですが、

    loaddll "tkinfo.dll";
    #n = dllfunc("SaveConfig", 0);
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    #sel = getregnum( "gSel" );
    if( (#sel & 0x800000) == 0 ) {
        writeregnum "gSel", #sel | 0x800000;
        closereg;
        #n = dllfunc("EnvChanged", 1);
    } else {
        closereg;
    }
    #n = dllfunc("SetAutoPushTimer", 1, "OK" );
    #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
    if( (#sel & 0x800000) == 0 ) {
        openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
        writeregnum "gSel", #sel;
        closereg;
        #n = dllfunc("EnvChanged", 1);
    }
    endmacro;

 のように、大変ややこしいマクロになります。

[ ]
RE:35302 SetAutoPushTimerEverについてNo.35303
hirahira さん 09/01/07 16:23
 
> 次にアップロード予定の秀丸メール(V5.15)にて、
>
>    loaddll "tkinfo.dll";
>    #n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "" );
>    #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
>    #n = dllfunc("StopAutoPushTimer");
>    endmacro;
V5.15が出た時点で動作確認したいと思います。


> しいてこっちの作戦でやるとしたらですが、
> のように、大変ややこしいマクロになります。
中身はよく分かりませんが、すごく気持ちよく動きました。(^_^)
V5.15までこちらで運用いたします。
ありがとうございます。

[ ]
RE:35302 SetAutoPushTimerEverについてNo.35308
hirahira さん 09/01/08 18:39
 
> 次にアップロード予定の秀丸メール(V5.15)にて、
>
>    loaddll "tkinfo.dll";
>    #n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "" );
>    #n = sendmessage( hidemaruhandle(0), 0x0111, 40323, 0 );
>    #n = dllfunc("StopAutoPushTimer");
>    endmacro;
>
> ってマクロでボタンを一気に押して動作するようになります。

V5.15にて動作確認いたしました。
これまでの待たされるような感じなくなり、
非常にキビキビした動作で感激です。

ありがとうございます。m(_ _)m

[ ]