SetAutoPushTimerEverの使い方No.35024
sea-gel さん 08/11/12 18:21
 
こんにちは。いつもお世話になっております。

 マクロのSetAutoPushTimerEver命令について教えて下さい。

 本体ウインドウを閉じたときに自動実行するマクロでメールを他の
アカウントに移動しています。
「アカウントをまたがって移動しようとしています。かまわずに移動
してもいいですか?」という警告を出したくないので
SetAutoPushTimerEverを次の様に使っています。

#n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "yes");
#n = dllfunc("Move", "ジャーナルログアカウント", "受信\\ジャーナルログ" );
#n = dllfunc("StopAutoPushTimer");


 メールの検索結果ウインドウが開いている状態で本体ウインドウを
閉じてこのマクロを自動実行させると「アカウントをまたがって移動
しようとしています。かまわずに移動してもいいですか?」という警
告が表示されます。
 メールの検索結果ウインドウが開いている状態では
SetAutoPushTimerEverが効かないのでしょうか?効かないとすると何
か逃げは無いでしょうか。ご教授宜しくお願いします。

 環境はWindows XP Pro SP3、秀丸メール Version 5.12です。

[ ]
RE:35024 SetAutoPushTimerEverの使い方No.35026
秀まるお2 さん 08/11/12 22:34
 
 こちらで簡単にテストした限りは「はい」ボタンが自動的に押されたようなん
ですけど、テスト方法が不完全のような気もします。

 とりあえず、AutoPushTimerを使う方法とは別に、そもそも「アカウントをま
たがってメールを移動/コピーした時」の確認メッセージを一時的にOFFにしてか
ら移動するって作戦をお勧めしたいと思います。

 その確認メッセージのフラグは、"Confirm"というDWORD値の0x20のビットです。
なので、マクロとしては以下のようになります。

loaddll "tkinfo.dll";
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
#confirmPrev = getregnum( "Confirm");
#confirmNew = #confirmPrev & 0xFFFFFFDF;
writeregnum "Confirm", #confirmNew;
#n = dllfunc("EnvChanged");
#n = dllfunc("Move", "ジャーナルログアカウント", "受信\\ジャーナルログ" );
writeregnum "Confirm", #confirmPrev;
#n = dllfunc("EnvChanged");
closereg;

 ということでどうでしょ?

[ ]
RE:35026 SetAutoPushTimerEverの使い方No.35027
sea-gel さん 08/11/12 23:49
 
夜遅くまでサポート対応ありがとうございます

 AutoPushTimer使う方法を止め、フラグを変更する方法を使うこと
にします。

 使い方を変更するのでこちらとしては問題解決なのですが、
AutoPushTimerを使う方法で発生する状況をもう少し説明いたします。

 メール本体だけが開いている場合や、メール本体と受信メール表示
のウインドウが開いている場合は「はい」ボタンが自動的に押された
ような動作になります。
 しかし、メール本体と検索して一覧表示を行った結果のウインドウ
が開いている場合は「アカウントをまたがって移動しようとしていま
す。かまわずに移動してもいいですか?」というメッセージが表示さ
れた状態でマクロが一時停止します。「はい」ボタンを押すとマクロ
の続きが走り、マクロ終了後にメール本体と検索結果のウインドウが
クローズします。

以上

[ ]
RE:35027 SetAutoPushTimerEverの使い方No.35031
秀まるお2 さん 08/11/13 17:28
 
 一応、そのテストをしたつもりなんですが、再現しないです。WindowsXPだと
ダメなのかと思ってWindows Vistaでもやってみましたけど、うまく動くようで
した。

 何か設定とかの条件が重なってないと起きないのだと思いますけども、とりあ
えず今回は別の手段で回避出来るということで良しとさせていただこうかと思い
ます。

-----っといいつつ、一応、やったテスト内容も書いておく。-----------

 1.「斉藤秀夫メイン」ってアカウントの「受信\迷惑メール」フォルダの
   未読メールを、別アカウントにいくつか移動させる。
 2.「検索・メールアドレス検索...」で適当な検索を実行して検索結果
   を表示させたままにする。
 3.先ほど移動した迷惑メールを1通選択する。
 4.マクロ実行。

 というだけのテストでした。

 マクロは、

loaddll "tkinfo.dll";
#n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "yes");
#n = dllfunc("Move", "斉藤秀夫メイン", "受信\\迷惑メール" );
#n = dllfunc("StopAutoPushTimer");

 という4行だけの内容でした。

[ ]
RE:35031 SetAutoPushTimerEverの使い方No.35035
sea-gel さん 08/11/14 12:52
 
 こんにちは、いつもお世話になっております。

> 何か設定とかの条件が重なってないと起きないのだと思いますけども、とりあ
>えず今回は別の手段で回避出来るということで良しとさせていただこうかと思い
>ます。
 教えてもらった別手段の方がスマートなのでそちらを使っており
ます。十分な回答をいただきましてありがとうございました。


 問い合わせで提供した情報が中途半端でサポートのお手間をかけた
だけの状態になってしまっているのでもう少し調べました。
 こちらが提供した情報が不足していました。発生条件には
MinimizeWindowも関係しているようです。
 マクロ実行中に画面がチラチラするのが嫌だったのでMinimizeWindow
で秀丸メール本体ウインドウを最小化した状態でマクロを動かしてい
ました。マクロを抜粋すると次のようなマクロになります。

===== マクロ抜粋 =====
loaddll "tkinfo.dll";
#n = dllfunc("MinimizeWindow");
#n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "yes");
#n = dllfunc("Move", "斉藤秀夫メイン", "受信\\迷惑メール" );
#n = dllfunc("StopAutoPushTimer");

 検索結果のウインドウと秀丸メール本体のウインドウの両方が開い
ている状態でこのマクロを動かすと、秀丸メール本体ウインドウが最
小化され、検索ウインドウが開いた状態で「アカウントをまたがって
移動しようとしています。かまわずに移動してもいいですか?」とい
う警告が表示されます。
 検索結果のウインドウを最小化し、秀丸メール本体のウインドウの
みが開いている状態でこのマクロを動かすと「はい」ボタンが自動的
に押された状態になります。

以上

[ ]
RE:35035 SetAutoPushTimerEverの使い方No.35036
秀まるお2 さん 08/11/14 13:21
 
 再現テストしたら今度は再現しました。メール移動についての確認メッセージ
の親ウィンドウが検索結果ダイアログになってしまうせいでうまく動かないよう
でした。

 こういうケース(マクロ実行中にメッセージボックスを出す場合)には、マク
ロを実行している秀丸エディタ側のウィンドウを親としてメッセージボックスを
出すように修正させていただきます。

[ ]