秀丸メールでの「マクロの実行...」についNo.09930
styth さん 22/07/15 09:57
 
//マクロ1

    loaddll "tkinfo.dll";
    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40092);    
//マクロ実行...(メール本体)
    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 173);      
//マクロ実行...(メールエディタ)
    endmacro

//マクロ2
menu
    "&1) あああ",
    "&2) いいい";

#result = result;
if ( #result == 0 ) endmacro;

if ( #result == 1 ) {
    message str(#result);
    loaddll "tkinfo.dll";
//  #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40092);    
//マクロ実行...(メール本体)
    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 173);      
//マクロ実行...(メールエディタ)
    endmacro;
}

 マクロ1と2の違いは、menuで選択するかどうかの違いです。
 マクロ1を実行すると、必ず、「マクロ実行...」のダイアログボックスが開きます。
 マクロ2を実行すると、「マクロ実行...」のダイアログボックスが開かない時が、
あります。
 どういう条件(タイミング)なら、開かないのか分かりません。
 自分だけの問題かもしれませんが、御報告までということで、よろしくお願いいた
します。
 手動で「マクロ実行...」のダイアログボックスを出すと、次にマクロ2を実行する
と、出てきます。
 マクロ1,2ともに実行する時は、メールエディタ上で実行しています。
 hmmail713b7です。

 https://www.maruo.co.jp/hidesoft/4/x09894_.html#9895
 で、教えて頂いた、以下の、マクロ3なら、秀丸エディタでは、ダイアログボック
スは出ますが、秀丸メールではエラーになってしまいます。

//マクロ3
menu
    "&1) あああ",
    "&2) いいい";

#result = result;
if ( #result == 0 ) endmacro;

if ( #result == 1 ) {
    $file = browsefile(macrodir,"*.mac");
    if( $file != "" ){
        execmacro $file;
        endmacro;
    }
}

[ ]
RE:09930 秀丸メールでの「マクロの実行..No.09931
秀まるお2 さん 22/07/15 11:24
 
 毎度バグでお手数かけてすみません。テストしてみていまいち再現しないと思った
んですが、endmacroする前に

   sleep 1000;

 を入れたら再現しまして、さらにソースコードを調べてみたら、マクロ実行を中断
する用の処理(Escキーが押されてるかどうか監視する処理)の中で、WM_COMMANDも
含めて各種メッセージを除去してしまう可能性があることが分かりました。

 disablebreakすれば回避できるかと思ったんですが、その場合でも別の処理(最低
限のメッセージループを回す処理)が働いてWM_COMMANDを取ってしまうことがあるよ
うでした。

 秀丸エディタの内部的な処理なのですが、この辺直してコマンドが無視されないよ
うに修正してみます。

 レベルダウンのバグが起きないように慎重に直したいので、「Bypass_PostMessag
e」の直後に「endmacro」があるか、または後ろに何も無くていきなりマクロ終了す
ることが確実なケースならって感じの処理にしようと思います。ヘルプにも、Bypass
_PostMessageでWM_COMMANDをPostした直後は即座にendmacroするように追記します。

[ ]
RE:09931 秀丸メールでの「マクロの実行..No.09932
秀まるお2 さん 22/07/15 15:13
 
 バグ修正できたと思うんですが、やはりバグの再現ができずでして、すみませんが
直ってるかどうかテストしてほしいです。

32bit版:
https://hide.maruo.co.jp/software/bin3/hmmail713b8_signed.exe

64bit版:
https://hide.maruo.co.jp/software/bin3/hmmail713b8_x64_signed.exe

 β7を使ってこちらで100回くらいテストしてもちょっと起きずです。

 sleep 1000;を入れてテストした場合には、β7では確実に再現してたのがβ8にて
起きなくなったことだけ確認しています。

[ ]
RE:09932 秀丸メールでの「マクロの実行..No.09937
styth さん 22/07/18 09:12
 
> バグ修正できたと思うんですが、やはりバグの再現ができずでして、すみません
>が直ってるかどうかテストしてほしいです。
 メールエディタ上では、OKだと思います。(「マクロ実行...」のダイアログボッ
クスが開きます)


 秀丸エディタで、テストすると、バグが再現します。

//マクロ3
menu
    "&1) あああ",
    "&2) いいい";

#result = result;
if ( #result == 0 ) endmacro;

if ( #result == 1 ) {
//  message str(#result);//コメント1
    loaddll @"C:\Program Files (x86)\HidemaruMail\tkinfo.dll";
//  loaddll "tkinfo.dll";
//  #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40092);    
//マクロ実行...(メール本体)
    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 173);      
//マクロ実行...(メールエディタ)
    endmacro;
}

 上記マクロを実行すると、必ず、バグが再現します。(自分のPCで、ですが)

//  message str(#result);//コメント1
 このコメントを外して、messageを表示させると、バグが再現しません。
 (「マクロ実行...」のダイアログボックスが開きます)

 以上で、再現できると良いんですが、よろしくお願いいたします。

[ ]
RE:09937 秀丸メールでの「マクロの実行..No.09938
秀まるお2 さん 22/07/18 09:30
 
 確認ありがとうございます。とりあえず秀丸メールの方は大丈夫ということは、今
回の修正が正しかったということにさせていただきます。

 秀丸エディタ上でtkinfo.dllをloaddllして呼び出す場合については秀丸エディタ
側で対処が必要になってしまいます。今回の秀丸メール側の修正を秀丸エディタ側に
も反映してもらうことにします。たぶんV9.17じゃなくてV9.18のβ版から反映する形
になるとになると思います。

[ ]
RE:09938 秀丸メールでの「マクロの実行..No.10243
styth さん 22/09/09 07:31
 
> 確認ありがとうございます。とりあえず秀丸メールの方は大丈夫ということは、
>今回の修正が正しかったということにさせていただきます。
 V7.15β3なんですが、秀丸メールで症状が結構な頻度で再発しています。(100%で
はありません)

> 秀丸エディタ上でtkinfo.dllをloaddllして呼び出す場合については秀丸エディタ
>側で対処が必要になってしまいます。今回の秀丸メール側の修正を秀丸エディタ側
>にも反映してもらうことにします。たぶんV9.17じゃなくてV9.18のβ版から反映す
>る形になるとになると思います。
 秀丸エディタでの再発は、ありません。

 急いでいませんが、よろしくお願いいたします。
 とりあえず、メニューバーにアイコンを登録して、そこから「マクロ実行...」を
開いています。

[ ]
RE:10243 秀丸メールでの「マクロの実行..No.10246
秀まるお2 さん 22/09/09 10:02
 
 すみません。秀丸エディタのVersion 9.17のソースコードを秀丸メールに同期させ
る時に、過去のこの修正が反映されてませんでした。

 他にも修正漏れが無いか探してみます。

 秀丸エディタの方にはVersion 9.19βからこの修正が反映されてるようでした。

[ ]
RE:10246 秀丸メールでの「マクロの実行..No.10247
styth さん 22/09/09 10:36
 
> すみません。秀丸エディタのVersion 9.17のソースコードを秀丸メールに同期さ
>せる時に、過去のこの修正が反映されてませんでした。
 https://www.maruo.co.jp/hidesoft/2/x39976_.html#39980
>「左右キーは必ず範囲選択の先頭/末尾」がONのときで、行番号クリック時の場合は、
>確かに想定した動きと違っていました。
>この場合でも左キーでは範囲選択の先頭、右キーでは末尾となるように修正します。
 これについても、今回の同期で反映されるのでしょうか?
 是非、反映するようにして頂きたいのですが、よろしくお願いいたします。
 今のところ、秀丸メールでは、「左キーでは範囲選択の先頭」にありません。

[ ]
RE:10247 秀丸メールでの「マクロの実行..No.10249
秀まるお2 さん 22/09/09 11:41
 
 この修正は秀丸エディタの最新βでの修正なので、秀丸メールのV7.15βには反映
されてないです。

 他にもあれもこれもバグだろって言われると切りが無いし、そういうことをすれば
するだけバグが出るリスクもアップしていいこと無いんですが、とりあえずこれだけ
最新βのソースコード調べて反映してみようと思います。

[ ]
RE:10249 秀丸メールでの「マクロの実行..No.10258
styth さん 22/09/09 23:06
 
> この修正は秀丸エディタの最新βでの修正なので、秀丸メールのV7.15βには反映
>されてないです。
> 他にもあれもこれもバグだろって言われると切りが無いし、そういうことをすれ
>ばするだけバグが出るリスクもアップしていいこと無いんですが、とりあえずこれ
>だけ最新βのソースコード調べて反映してみようと思います。
 ありがとうございます。秀丸メールと秀丸エディタで処理を分岐させようか案じて
いましたが、一安心です。
 「左キーでは範囲選択の先頭」の件、よろしくお願いいたします。

[ ]
RE:09930 秀丸メールでの「マクロの実行..No.10281
styth さん 22/09/17 07:40
 
> マクロ1と2の違いは、menuで選択するかどうかの違いです。
> マクロ1を実行すると、必ず、「マクロ実行...」のダイアログボックスが開きます。
> マクロ2を実行すると、「マクロ実行...」のダイアログボックスが開かない時が、
>あります。
> どういう条件(タイミング)なら、開かないのか分かりません。
  hmmail715b7です。
 いままでも、そうだったかも知れませんが、
 開かない時は、メニューが表示後、1秒ぐらい時間をおくと、「マクロ実行...」の
ダイアログボックスが開きません。
 開く時は、素早くやると、開きます。
 メニューが表示されてから、時間を空けても、「マクロ実行...」のダイアログが
開くようにして頂けないでしょうか。
 よろしくお願いいたします。

[ ]
RE:10258 秀丸メールでの「マクロの実行..No.10288
秀まるお2 さん 22/09/20 09:11
 
 話がよく分かってないかもしれないですが、こちらの件は秀丸メールのVersion 7.
15β5で対応してて、今現在は大丈夫なはずだと思います。

 秀丸エディタの動作環境の「左右キーは必ず範囲選択の先頭/末尾」をONにしてて、
行番号をクリックしてから左右矢印キーを押して移動する動作は最新βの秀丸エディ
タと同じ動きになってるはずだと思います。それだけテストして確認したはずなので。

[ ]
RE:10281 秀丸メールでの「マクロの実行..No.10289
秀まるお2 さん 22/09/20 09:17
 
 こちらの件(マクロ2の方がうまく動かない件)も、最新βでは大丈夫なはずだと
思います。???

 秀丸メール本体ウィンドウ上でもエディタ・ウィンドウ上でも、32bit版でも64bit
版でもどっちでも繰り返しテストしてたんですが、大丈夫そうな気がします。マクロ
実行してメニューが出ていてEnterキーを押して、メッセージが出て、またEnterを押
すと、マクロ実行のダイアログボックスが出てきます。そこでまたEnterしてマクロ
実行をずっと繰り返してても大丈夫そうな感じです。

[ ]
RE:10289 秀丸メールでの「マクロの実行..No.10292
styth さん 22/09/20 12:18
 
> どういう条件(タイミング)なら、開かないのか分かりません。
 条件が分かった気がしたので、先日、投稿しました。申し上げたかったのは、こう
いうことです。

//マクロ4
loaddll @"C:\Program Files (x86)\HidemaruMail\tkinfo.dll";
menu
    "&1) メール本体",
    "&2) 以外";

#result = result;
if ( #result == 0 ) endmacro;

if ( #result == 1 ) {
 #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40092);    //
マクロ実行...(メール本体)
}
if ( #result == 2 ) {
 #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 173);      //
マクロ実行...(メールエディタ)
}
endmacro;

 上記マクロで、テストして頂けないでしょうか。
(1) メニューが出た後に、2−3秒以上たってから、メニューの1か2を選びます。
「マクロ実行...」が表示されません。
(2) メニューが出た後、間髪入れずに、1か2を選びます。「マクロ実行...」が
表示されます。

 違いは、数秒、時間を空けるかどうかの差なんですが、再現しないでしょうか?

[ ]
RE:10288 秀丸メールでの「マクロの実行..No.10293
styth さん 22/09/20 12:19
 
> 話がよく分かってないかもしれないですが、こちらの件は秀丸メールのVersion 7.
>15β5で対応してて、今現在は大丈夫なはずだと思います。
 こちらの件は、Version 7.15β5で大丈夫だったのですが、報告を怠っていました。
すみません。

[ ]
RE:10292 秀丸メールでの「マクロの実行..No.10294
秀まるお2 さん 22/09/20 14:11
 
 そのマクロでテストしたら、たしかにマクロ実行のダイアログが出てきませんでし
た。さらに調べたら、「endmacro」の前に「}」があるのと、さらにはmenu文のせい
でマクロ実行に時間がかかってることが関係してWM_COMMANDが除去されてしまってま
した。

 とりあえずの回避策的にはBypass_PostMessageの直後にendmacroを入れてやって、

loaddll @"tkinfo.dll";
menu
    "&1) メール本体",
    "&2) 以外";

#result = result;
if ( #result == 0 ) endmacro;

if ( #result == 1 ) {
 #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40092);    //
マクロ実行...(メール本体)
 endmacro;
}
if ( #result == 2 ) {
 #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 173);      //
マクロ実行...(メールエディタ)
 endmacro;
}
endmacro;

 にする作戦がありますが、なかなか作ってる人にそこまで配慮してもらうのは無理
があるので、僕の方でなんとか回避策を入れてみます。次のV7.15β8に入れてみます。

[ ]
RE:10294 秀丸メールでの「マクロの実行..No.10295
秀まるお2 さん 22/09/20 14:49
 
 Bypas_PostMessageで自分自身にWM_COMMANDをPostしたら、その後1秒間はWM_COMM
ANDの除去(というか、マクロの中断を検知する処理)を無しにするって作戦にしま
す。この作戦なら秀丸エディタのマクロ関係の処理には手を入れないのでレベルダウ
ンの可能性は低くなると思います。すくなともBypass_PostMessageを使わない限りは
従来通りになるので。

[ ]