メールエディタから本体が起動された場合No.01665
ヒラメ さん 17/07/17 14:44
 
既存のメールを開いた状態で本体を終了し、開いていたメールから
このメールを秀丸メール本体側で選択するを実行すると、起動時の
自動実行マクロが実行されてしまいます。

この状態をマクロ側でトラップできるようにReasonMacroStartedに
情報を追加して頂くことは可能でしょうか。

もし簡単なようでしたらご検討お願いします。

秀丸メール Version 6.72 Beta 11 (64bit)
Windows 10 Pro (Creators Update), 1703 (15063.483) (64bit)

[ ]
RE:01665 メールエディタから本体が起動さNo.01667
秀まるお2 さん 17/07/18 10:09
 
 「このメールを秀丸メール本体側で選択」の場合は、そもそも的にマクロが実
行されるのがよろしくないように思います。

 この場合はマクロが自動実行されることが無いように直そうと思いますが、そ
れでいいですよね?

 それか、何かマクロから見分けられるようにってことでしたら、エディタ・
ウィンドウからの指示で秀丸メール本体ウィンドウが作業中なのかどうか返すよ
うな関数を用意したらいいかなぁと思います。

 WindowsのAPIに「InSendMessage()」ってのがあるんですが、それをそのまま
呼び出す用の、

   if( dllfunc("Bypass_InSendMessage") ) {
       // 他のウィンドウから指示されて動作中
       endmacro;
   }

 みたいな関数追加で対応するといいですが、そもそも的に、よそのウィンドウ
から指示されてる秀丸メール本体ウィンドウの中でマクロ実行されること自体が
異常な状態になってしまってると思います。例えばsetactivehidemaruとか実行
するとおかしくなると思います。

 他には・・・エディタ・ウィンドウが既に存在してるかどうか調べる用に、

    if( hidemaruhandle(1) != -1 ) {
        //エディタ・ウィンドウが存在してる
        endmacro;
    }

 みたいな判定可能かなぁとは思います。

 Bypass_InSendMessageも一応追加しておきますが、マクロ実行しないのが正解
のような気がします。

[ ]
RE:01667 メールエディタから本体が起動さNo.01668
秀まるお2 さん 17/07/18 10:30
 
>  WindowsのAPIに「InSendMessage()」ってのがあるんですが、それをそのまま
> 呼び出す用の、

 InSendMessageではダメでした。これは取り消します。

 そもそも的にマクロ実行はタイマーを使って遅延実行されるので、こういうや
り方はダメで、何かいい関数を追加するのはちょっと難しいです。

 とりあえずマクロ実行しないって修正だけしてしまいます。

[ ]
RE:01668 メールエディタから本体が起動さNo.01672
ヒラメ さん 17/07/18 12:07
 
> この場合はマクロが自動実行されることが無いように直そうと思いますが、そ
>れでいいですよね?

私のケースではこの対応が最高です。
デメリットが無いようでしたら修正お願いします。

[ ]
RE:01672 メールエディタから本体が起動さNo.01684
ヒラメ さん 17/07/18 19:15
 
最新ベータ版での修正を確認しました。
ご対応ありがとうございました。

[ ]