マクロ「Move」の仕様確認No.35073
Tetchiro さん 08/11/21 18:06
 
お世話になります。
続けて、もうひとつ。

秀丸メールマクロ「Move」を使う際、スレッド表示した状態で、
メールをMoveすると配下のメールも同時に移動するようになっています。

現在、上級者向け設定を有効にして、
「メール一覧」「スレッド表示」「詳細」で「配下のメールもまとめて処理する」を
選択しているのですが、
これが有効だから配下メールも同時に移動しているのでしょうか?
それとも、スレッド表示している場合には、配下メールも強制的に
移動するのでしょうか?

もし、「配下のメールもまとめて処理する」が有効だから同時に移動しているのであ
れば、
このオプションが選択されているか確認する、または変更する方法
はないのでしょうか?

ヘルプを確認してみたのですが良く分からなくて。
このマクロを他PCで使う場合に、このあたりのオプションで動作が
変わってしまっては困るので、念のため確認したいと思っております。

[ ]
RE:35073 マクロ「Move」の仕様確認No.35089
秀まるお2 さん 08/11/25 09:21
 
 現状のMove/Copy関数は、メールの移動/コピーを手で実行したのとまったく
同じで、スレッド表示の場合も設定によって動作が変わります。

 これまた何かパラメータを追加して、スレッド表示の時の動作を指定出来るよ
うにします。

[ ]
RE:35089 マクロ「Move」の仕様確認No.35094
秀まるお2 さん 08/11/25 11:23
 
 パラメータ追加しようと思ったんですが、Delete関数でも同じ問題があるし、
他にもいろいろ同じ状況がありえます。なので、パラメータ追加はやめます。

 現状でも、実はレジストリのThreadTreeOpeっていうDWORD値を書き換えて
EnvChangedする方法でなんとか出来るいえば出来るんですけど、念のため、
SetThreadTreeOpeっていう関数を追加しようと思います。

 まだ仕様が確定出来てないですけど。

[ ]
RE:35094 マクロ「Move」の仕様確認No.35097
Tetchiro さん 08/11/25 12:24
 
 スレッド表示でのDelete、Moveが、設定の影響を受けることが
はっきりして助かりました。

 当方としてはそのスレッド全体が削除できれば良いので、
設定の影響を受けないように、スレッドの下位の方から先に、
Delete、Moveするように改造することにします。


[ ]
RE:35097 マクロ「Move」の仕様確認No.35100
秀まるお2 さん 08/11/25 13:17
 
 DisableThreadTreeOperationって関数を追加することにします。これを呼び出
すと、マクロ終了の時点まで、ツリー単位の操作は一切しない(問い合わせメッ
セージも出ない)という風にします。

   #n = dllfunc("DisableThreadTreeOperation");
   #n = dllfunc("Move", ....);

 ってな具合で。

 もう必要無いかもしれませんが、念のため追加します。

[ ]
RE:35100 マクロ「Move」の仕様確認No.35102
Tetchiro さん 08/11/25 16:14
 
ご丁寧な対応ありがとうございます。

>  #n = dllfunc("DisableThreadTreeOperation");

 機能としては、
Move、Deleteの挙動がスレッド表示ではないときと完全に同じになる、
と思ってよろしいのでしょうか?

 

[ ]
RE:35102 マクロ「Move」の仕様確認No.35103
秀まるお2 さん 08/11/25 16:29
 
> と思ってよろしいのでしょうか?

 っと思っていただいてOKです。

[ ]
RE:35103 マクロ「Move」の仕様確認No.35104
Tetchiro さん 08/11/25 16:55
 
了解いたしました。

実装されましたら、Moveの挙動を意識するためにも、
>   #n = dllfunc("DisableThreadTreeOperation");
を使わせていただきます。


また、スレッド表示中のMoveやDeleteの挙動への設定の影響
について記載をお願いしたいと存じます。

[ ]
RE:35104 マクロ「Move」の仕様確認No.35105
秀まるお2 さん 08/11/25 17:50
 
> また、スレッド表示中のMoveやDeleteの挙動への設定の影響
> について記載をお願いしたいと存じます。

 Move, Copy, Delete関数の説明にDisableThreadTreeOperation関数があること
の説明だけ載せておきます。

[ ]
RE:35105 マクロ「Move」の仕様確認No.35152
Tetchiro さん 08/12/08 09:55
 
遅くなりましたが、Ver.5.13β13にて、
 DisableThreadTreeOperation関数の実装と
 Move, Copy, Delete関数のヘルプへの上記関数の説明追記
を確認しました。
 対応ありがとうございました。

 ただ、Copyに「配下のメールをいっしょに削除する...」と誤記
されているようです。正式版までに修正をお願いします。



[ ]
RE:35152 マクロ「Move」の仕様確認No.35155
秀まるお2 さん 08/12/08 11:17
 
 ヘルプ間違いのご指摘ありがとうございます。さっそく修正させていただきま
す。

[ ]
RE:35089 マクロで「Shift + →」(スレッNo.35156
Tetchiro さん 08/12/08 13:26
 
DisableThreadTreeOperation関数を実装していただいて有難うございます。

 さて、スレッドを配下ごと移動させるためのマクロを作成して、
その目的は達成できたのですが、動作中、カーソルの上下移動が
激しく、かなりみっともない仕上がりになっています。

 そこで、手動だと「Shift + →」を使ってメールをスレッドごと
まとめて選択し移動させることが可能なので、マクロでも使えないか
とがんばってみたのですが、肝心なところで動きません。

SelectAllMail関数のヘルプや他サイトを参考に、
  Shift:sendmessage(hidemaruhandle(0), 0x0100, 0x10, 0);
  →   :sendmessage(hidemaruhandle(0), 0x0100, 0xA0, 0);
まではたどり着いたのですが、「Shift + →」までには至りません。
(Shiftを押し続けるところが実行できません。
 0x10+0xA0と説明してるところもあるのですが値的に違うし)

どうしたら、「Shift + →」が実現できますでしょうか?
ご助言いただけませんでしょうか。

※実現できたら、せっかく作っていただいたDisableThreadTreeOperation関数
 が無駄になってしまいますが(^^;)

[ ]
RE:35156 マクロで「Shift + →」(スレッNo.35157
Tetchiro さん 08/12/08 13:35
 
→のコードをコピーミスしました。

>  Shift:sendmessage(hidemaruhandle(0), 0x0100, 0x10, 0);
>  →   :sendmessage(hidemaruhandle(0), 0x0100, 0x27, 0);

[ ]
RE:35156 マクロで「Shift + →」(スレッNo.35158
Iranoan さん 08/12/08 14:30
 
 Tetchiro さん今日は、Iranoan です。
>  そこで、手動だと「Shift + →」を使ってメールをスレッドごと
> まとめて選択し移動させることが可能
 これだけ下のスレッドしか選択されませんけど、それでも良いんですかね。
良ければ、
> どうしたら、「Shift + →」が実現できますでしょうか?
は、末尾の要領で実現できます。SimulateKeyStroke() については、ヘルプに
記載がないようなので、
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_8/x13444.html#13473
を参考にしてください。
//------------------------------------------------------------
#tmp = dllfunc( "SelectPane", 1 );
#tmp = dllfunc( "SimulateKeyStroke", 0x27, 1, 0 );

[ ]
RE:35158 マクロで「Shift + →」(スレッNo.35161
Tetchiro さん 08/12/08 15:40
 
Iranoanさん、ありがとうございます。

希望通りの動作です。


>http://hidemaruo.dip.jp:81/hidesoft/hidesoft_8/x13444.html#13473
ご提示していただいたページが開けないので、SimulateKeyStrokeの
詳細は確認できていませんが、すっきりしました。

画面エラーは(Internet Explorer ではこのページは表示できません)です(^^;)

>#tmp = dllfunc( "SimulateKeyStroke", 0x27, 1, 0 );
推測するに、第3引数の"1"がShiftキーで、同時押しのキーでしょうか。
そうすると、ビット立てでCtrlやAlt、Delなどが設定されているので
しょうか?

[ ]
RE:35161 マクロで「Shift + →」(スレッNo.35163
Iranoan さん 08/12/08 16:10
 
 秀まるおさん、Tetchiro さん今日は、Iranoan です。
> >http://hidemaruo.dip.jp:81/hidesoft/hidesoft_8/x13444.html#13473
> ご提示していただいたページが開けないので、SimulateKeyStrokeの
> 詳細は確認できていませんが、すっきりしました。
 ポートが閉じられているのかなあ〜。
> >#tmp = dllfunc( "SimulateKeyStroke", 0x27, 1, 0 );
> 推測するに、第3引数の"1"がShiftキーで、同時押しのキーでしょうか。
> そうすると、ビット立てでCtrlやAlt、Delなどが設定されているので
> しょうか?
該当しそうな場所を引用しておきます。
> extern "C" int _cdecl SimulateKeyStroke( int vkey, BOOL fShift, BOOL
> fControl ) {
2, 3 番目の引数が「押しているか?」です。

 以下秀まるおさんへ
 あまりにもマニアックだからヘルプに記載が無いのでしょうか?

[ ]
RE:35163 マクロで「Shift + →」(スレッNo.35165
秀まるお2 さん 08/12/08 16:55
 
 ヘルプに書いてない理由はよく分からないのですが、とりあえず今から追加さ
せていただきます。

 それよりも…。SimulateKeyStrokeでうまくいくのですね。自分で作ってて自
分で気づきませんでした。

[ ]
RE:35165 マクロで「Shift + →」(スレッNo.35166
Tetchiro さん 08/12/08 17:31
 
Iranoanさん、秀まるおさん、お世話になりました。

便利な機能が掘り出せて、うれしく思います。

CtrlとShiftとの組み合わせができることがわかって、
マクロの作成が大変便利になりました。

[ ]
RE:35165 マクロで「Shift + →」(スレッNo.35168
Iranoan さん 08/12/08 18:16
 
 秀まるおさん今日は、Iranoan です。
>  ヘルプに書いてない理由はよく分からないのですが、とりあえず今から追加さ
> せていただきます。
 有難うございました。


[ ]
RE:35168 マクロで「Shift + →」(スレッNo.35662
Tetchiro さん 09/02/16 11:39
 
Iranoanさんへ

 有難うございました。

 秀まるおさんも忘れているようなマニアックな情報など、
 ベテランの方のご意見がとても参考になり、感謝しております。




いかん、大人気ない(^^;)

[ ]