マクロの実行で非表示ウィンドウが表示さNo.03260
Imabeppu さん 12/04/19 08:55
 
Imabeppu です。

仮想デスクトップのソフト VirtuaWin v4.3 を使用しています。カレン
トのデスクトップにないウィンドウを非表示にすることで、仮想デスク
トップを実現しているものと思います。

秀丸メールのマクロと少し相性が悪いようです。

  (1) 秀丸メールを起動します。
  (2) [ファイル]-[新規メール] で新規メールのウィンドウを開きます。
  (3) 開いた新規メールのウィンドウを、カレント以外のデスクトップ
      に移動させます。(つまり、新規メールのウィンドウが非表示に
      なります)
  (4) 秀丸メールの [マクロ]-[マクロ実行] で、以下の1行だけのマク
      ロを実行します。

        loaddll "tkinfo.dll";

上記を実施すると、非表示だった新規メールのウィンドウが表示されて
しまいます。新規メールや返信メールのウィンドウをたくさん開き、そ
れぞれの内容に応じて仮想デスクトップに割り振って使用したいのです
が、何かマクロを実行すると表示されてしまう状況です。

そこで要望なのですが、マクロの実行では極力表示/非表示の制御を行
わないようにできないでしょうか。

[ ]
RE:03260 マクロの実行で非表示ウィンドウNo.03261
秀まるお さん 12/04/19 16:40
 
 調べてみたら,特にloaddllは関係なくて、マクロが終了した時点で、非表示
のウィンドウがあれば勝手に表示するって処理が入っていました。

 これは、秀丸エディタの場合に、いわゆるステルス秀丸というのがあって、そ
れが、マクロを終了してもそのままステルス状態で放置されてしまうことを防ぐ
ようにそうなっているようでした。

 なので秀丸エディタでも同じことが起きると思います。

 秀丸メールの場合でも、showwindow文を使って非表示ウィンドウにしてしまう
ことが出来るので、その場合はマクロ終了時点で自動で復元してやる必要はある
かと思います。

 ちょっと、レベルダウンをさせずに直すのは難しいですけども…。

 秀丸エディタの動作環境の「トラブル対策」の所にオプション追加するって方
向で一回考えてみます。

[ ]
RE:03261 マクロの実行で非表示ウィンドウNo.03262
Imabeppu さん 12/04/19 17:21
 
Imabeppu です。

>  調べてみたら,特にloaddllは関係なくて、マクロが終了した時点で、非表示
> のウィンドウがあれば勝手に表示するって処理が入っていました。
>  これは、秀丸エディタの場合に、いわゆるステルス秀丸というのがあって、そ
> れが、マクロを終了してもそのままステルス状態で放置されてしまうことを防ぐ
> ようにそうなっているようでした。
>  なので秀丸エディタでも同じことが起きると思います。

ステルス秀丸の対策として、非表示のウィンドウはすべて強制的に表示
する処理が入っている、ということですね。

秀丸エディタで試してみましたが、同じことは起きないようでした。別
プロセスだからでしょうか。設定に依存するのかもしれませんね。

ステルス秀丸の対策を、たとえば「マクロ中で生成されたステルス秀丸
は自動で閉じる」にするといいのかもしれませんね。閉じると問題があ
るのであれば、「マクロ中で生成されたステルス秀丸のみ表示状態に変
更する」でもよいかもしれません。

もし対処されるとうれしいです。

[ ]
RE:03262 マクロの実行で非表示ウィンドウNo.03263
秀まるお さん 12/04/19 17:59
 
 秀丸エディタでは起きないということで、ソースコードを見直したら、

> ステルス秀丸の対策を、たとえば「マクロ中で生成されたステルス秀丸
> は自動で閉じる」にするといいのかもしれませんね。

 それに近い動作になってました。

 意図的にステルス状態で起動した秀丸に限って表示状態に戻すって処理になっ
ました。なので、例えばマクロで「showwindow 0;」を実行すると、そのまま非
表示がキープされてしまうようです。(これはこれでまずいような気もするけど
も)

 秀丸メールの場合は、そもそもステルス状態で起動することは無いので、こう
いう対策自体が不要な気がしますけども…。ソースコードを見ると、たしかにこ
の処理が必要であるかのようなコメントもあって、いじるのがちょっと怖い所で
はあります。

 ちょっとレベルダウンが怖いんですが、とにかく次のβ版で、意図的にマクロ
実行中に非表示にしたのでなければそのまま非表示をキープするような処理を入
れてみます。

[ ]
RE:03263 マクロの実行で非表示ウィンドウNo.03264
山紫水明 さん 12/04/19 20:57
 
 秀まるおさん,

> 意図的にステルス状態で起動した秀丸に限って表示状態に戻すって処理になっ
>ました。なので、例えばマクロで「showwindow 0;」を実行すると、そのまま非
>表示がキープされてしまうようです。(これはこれでまずいような気もするけど
>も)

 私も仕様としては少し問題があるような気がします。
 秀丸エディタのヘルプには,
-----------------------------------------------------------------------
 0を指定すると、秀丸エディタのウィンドウが見えなくなります。元に戻すに
はshowwindow 1を実行してください。
 0を指定したままマクロを終了すると、見えないままのウィンドウが残ってし
まうので十分に注意する必要があります。
 見えないままの秀丸エディタが残らないようにするには openfile "/h"のステ
ルスモードを使用することをお勧めします。
-----------------------------------------------------------------------
とあり,必要なときはステルスモードを使いますが,すでに開いているファイル
を非表示にするには showwindow 0 を使用して,後でshowwindow 1で戻すか,
closehidemaru で閉じています。
 しかし,途中でマクロエラーを起こしてしまうと,見えない秀丸が残ってしま
いす。この見えない秀丸はウィンドウ一覧にも表示されません。結局,タスクマ
ネージャで終了させるより他にないようです。
 ステルスモードと同じ扱いにしてもらえばいいのですが,とりあえず上記ヘル
プに,万一残った場合の対処を追加していただけたらと思います。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:03264 マクロの実行で非表示ウィンドウNo.03265
Imabeppu さん 12/04/19 21:50
 
Imabeppu です。

>  しかし,途中でマクロエラーを起こしてしまうと,見えない秀丸が残ってしま
> いす。この見えない秀丸はウィンドウ一覧にも表示されません。結局,タスクマ
> ネージャで終了させるより他にないようです。

非常時用に、全部のウィンドウを表示するマクロを用意しておくといい
かもしれないですね。こんな感じでしょうか。(常駐秀丸だと正常に動
作しないかも)

================================================================
// カレントの秀丸エディタのウィンドウハンドルを取得
#current = hidemaruhandle(0);

// すべての秀丸エディタのウィンドウハンドルを取得
#i = 0;
#count = hidemarucount;
while (#i < #count)
{
    #handle = hidemaruhandle(#i);
    if (#handle < 0) break;
    #handles[#i] = #handle;
    #i = #i + 1;
}

// すべての秀丸エディタをもとのサイズに戻す
#count = #i;
#i = 0;
while (#i < #count)
{
    #handle = #handles[#i];
    if (#handle != #current)
    {
        setactivehidemaru #handle;
        showwindow 1;
    }
    #i = #i + 1;
}

// カレントの秀丸エディタをアクティブに
if (#current >= 0)
{
    setactivehidemaru #current;
}
================================================================

[ ]
RE:03265 マクロの実行で非表示ウィンドウNo.03266
秀まるお さん 12/04/20 23:10
 
 「showwindow 0;」の場合は意図的にマクロを終了しても非表示をキープする
ようになってるようですが、秀丸担当に理由を聞いてみたんですが、はっきりと
した理由は不明なようです。

 なので、とりあえず次のβ版ではマクロ終了と同時に表示状態に戻すように直
してみます。(秀丸メールも)

[ ]
RE:03266 マクロの実行で非表示ウィンドウNo.03267
山紫水明 さん 12/04/21 19:51
 
 秀まるおさん,

> なので、とりあえず次のβ版ではマクロ終了と同時に表示状態に戻すように直
>してみます。(秀丸メールも)

 そうしていただければすっきりすると思います。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:03265 マクロの実行で非表示ウィンドウNo.03268
山紫水明 さん 12/04/21 20:06
 
 Imabeppuさん,

>非常時用に、全部のウィンドウを表示するマクロを用意しておくといい
>かもしれないですね。

 コメントいただきありがとうございます。
 秀丸が陰で残っているというのが,仕様上どうも不自然だではないかと思って
投稿したわけです。
 マクロエラーをマクロによって解決するというのは,たしかに1つの解決方法
ですが,それを標準にするというのは,ちょっとどうかなという気がします。場
合によっては,陰の秀丸に気づかないこともありますし。
 いずれにしても,仕様変更していただけそうなので問題は解決しそうです。

                          山紫水明
                          SANSHISUIMEI

[ ]