setactivehidemaru で切り替えが変No.02612
三宅 さん 03/08/05 09:02
 
setactivehidemaru でウィンドウ切り替えがおかしくなるときがある。

 エクスプローラのフォルダウィンドウがアクティブになることもある。
 タイミングの問題?
 ダミーの While ループを入れるとましになる。
 Win 95+Ver.2.20ごろは正常に動作したが、Win 98+Ver.3.01ごろから起こるよう
になったように思う。

 #cur_handle = hidemaruhandle(0);
 nexthidemaru;   //次の秀丸に切り替え

// #j = 1; while (#j <= 2000) {#j = #j + 1;} //これを入れると、まず正常
// #j = 1; while (#j <= 100) {#j = #j + 1;} //これだと、たまにおかしくなる

 setactivehidemaru #cur_handle;    //元のウィンドウをアクティブに

endmacro;

環境:Windows98, Ver.4.00β13(Ver.3.19 でも起こる)
   Pentium 120MHz(非力すぎる? ・・・でも、秀丸自体は十分使えてます。)

[ ]
RE:02612 setactivehidemaru で切り替えがNo.02637
Iranoan さん 03/08/05 18:07
 
 三宅さん今日は、Iranoan です。
> setactivehidemaru でウィンドウ切り替えがおかしくなるときがある。
 実はこれ、ずーーっと以前から保留というか、現状のままというか、色々対
策を入れたけどまだ発生することが有ると言うか、兎に角未だに完全には直っ
ていないようです(;_;)。時間の掛かっている原因は、確実な再現方法が見つ
からないためのようです。なお
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x07351.html
が私の確認できる範囲では最古の報告です。

 現状では仕方がないので、
setactivehidemaru #n;
#i = 0;
while( !result ){
  setactivehidemaru #n;
  if( #i > 100 ){
    message "ウィンドウの切り替えが出来ません";
    endmacro;
  }
  #i = #i + 1;
}
というようにして、何度がやり直す処理を入れることにしています。

[ ]
RE:02637 setactivehidemaru で切り替えがNo.02638
秀まるお さん 03/08/05 18:22
 
 アクティブウィンドウの切り替えに失敗するケースなら、鶴亀でもあって、鶴
亀の場合はそうなった場合でも無理矢理ウィンドウのZオーダー(重なり順序)
だけトップに移動させて、マクロだけは目的のエディタ上で動くように修正しま
した。(と思う)

 秀丸担当が解決できなかったということなら、僕がいろいろいじってみたいと
思います。

 秀丸の場合はプロセス間通信になるので少々面倒そうですけど…。

 (いろいろバグがあるもんだなぁと)

[ ]
RE:02638 setactivehidemaru で切り替えがNo.02640
Iranoan さん 03/08/05 19:08
 
 秀まるおさん今日は、Iranoan です。
>  秀丸担当が解決できなかったということなら、僕がいろいろいじってみたいと
> 思います。
 一応これまでの経験だと、loadfile では問題が起きない? ので、ファイル
ではなく、毎回別のファイルを新たなウィンドウで開いて、閉じてを繰り返し
ながら行っていると起きやすいようです。また報告を見ていると、95 系ばか
りなので、ひょっとすると OS に問題があるのかも? と疑っています。ご参考
までに。

 P.S 返信不要です。

[ ]
RE:02640 setactivehidemaru で切り替えがNo.02643
秀まるお さん 03/08/06 11:58
 
 SetForegroundWindow()に失敗してどうにもならないケースについては対処で
きたと思います。

 SendMessage()に失敗してるケースがあるとしたら、それについては対処でき
ないですけど…。

 とりあえず次のβ14にて、大変お手数ですが、マクロのテストなどして欲しい
です。

 (こちらで簡単に再現テストした限りは再現できず、秀丸担当に聞いても適当
な再現方法は無いという返事でした)

[ ]
RE:02643 setactivehidemaru で切り替えがNo.02665
三宅 さん 03/08/06 23:28
 
> とりあえず次のβ14にて、大変お手数ですが、マクロのテストなどして欲しい
>です。

Iranoan さん、秀まるお さんこんにちは。
 OSに信頼できない点があるのかも知れないとは思っていましたが、いろいろ技法
のアドバイスや対処ありがとうございます。
 β14で試させて頂きます。

[ ]
RE:02643 setactivehidemaru で切り替えがNo.02684
Iranoan さん 03/08/07 23:14
 
 秀まるおさん今日は、Iranoan です。
>  とりあえず次のβ14にて、大変お手数ですが、マクロのテストなどして欲しい
> です。
 取り敢えず。ファイルが多くある場所ということで、
grep ".", "*.mac", macrodir, regular, icon, subdir, filelist;
#n = hidemaruhandle( 0 );
#i = 0;
while( 1 ){
  tagjump;
  #j = hidemaruhandle( 0 );
  setactivehidemaru #n;
  if( !result ){
    message "setactive " + str( #i );
    endmacro;
  }
  closehidemaru #j;
  if( !result ){
    message "close " + str( #i );
    endmacro;
  }
  #i = #i + 1;
  movetolineno 0, lineno + 1;
  if( code == eof )break;
}
message "ok";
を実行してみましたが、問題ありませんでした。どうやら良さそうです(^^)。

[ ]
RE:02684 setactivehidemaru で切り替えがNo.02702
秀まるお さん 03/08/08 17:01
 
 テストありがとうございます。

 何か不具合があったらまたお願いします。

[ ]
RE:02643 setactivehidemaru で切り替えがNo.02817
三宅 さん 03/08/20 12:56
 
Windows98, Ver.4.00β14
報告が遅くなってすみません。
Iranoan さんみたいに自動じゃないですけど、確認しました。
今まで入れていたダミーループを削除しちゃっても、起きていません。
おかげさまで、非力なPCでも、より快適になりました。ありがとうございました。

[ ]
RE:02702 setactivehidemaru で切り替えがNo.02920
Iranoan さん 03/09/01 17:14
 
 秀まるおさん今日は、Iranoan です。
 このスレッドにちょっと関係することで、ちょっと質問があります。
 「秀まるおのマクロ集」に含まれる「複数ファイルまとめて全置換マクロ
(multirep.mac)」について質問があります。このマクロを grep の結果のウィ
ンドウだけが存在する状態で実行したら、マクロ終了後ウィンドウは幾つ残っ
ているのが正常なのでしょうか? ざっと見た限りでは、最後に開いたファイル
だけは閉じないようなので、grep の結果ウィンドウ+最後に開いたファイルの
合計 2 つが正しいと思うのですが、それ以上ウィンドウが残ることが有りま
す。
 もしこの想像が正しければ、「setactivehidemaru, closehidemaru,
hidemaruorder のどれか (若しくは全て) が正常に動作しないことが有る」と
いうことになりそうです。

[ ]
RE:02920 setactivehidemaru で切り替えがNo.02935
秀まるお さん 03/09/05 11:25
 
 返事が遅くてすみません。

 そのマクロの中身を今確認してないのにコメントしてしまいますが、
closehidemaruが失敗するケースがあるのは、今回の一連の修正とは関係ないで
す。

 しいてそういうケースがるとしたら調査が必要ですが、そもそもマクロが悪い
のかもしれないし、まずは自分が昔作ったマクロの中身を確認しないといけない
です。

 ということで、当分保留します。

[ ]
RE:02935 setactivehidemaru で切り替えがNo.02940
Iranoan さん 03/09/05 12:53
 
 秀まるおさん今日は、Iranoan です。
>  ということで、当分保留します。
 解りました。
 ただ先ほど気が付いたのですが、以前 (turukame.3:02684)、
setactivehidemaru の動きを確認したマクロで、closehidemaru は使っている
ので、問題は hidemaruorder かも知れません。

[ ]
RE:02702 setactivehidemaru で切り替えがNo.02999
Iranoan さん 03/09/16 17:59
 
 秀まるおさん今日は、Iranoan です。
>  何か不具合があったらまたお願いします。
 単なる報告ですが、「秀まるおのマクロ集」に含まれる「複数ファイルまと
めて全置換マクロ (multirep.mac)」にて、おかしな事が稀に起きるようです。
 現象としては、既にファイルが開かれているのに、新たにウィンドウを開く
ことが有ります。

>   #handle = findhidemaru( $filename );
>   if( #handle < 0 ) {
>       openfile "\"" + $filename + "\""; // 空白を含んでも大丈夫
とあるので、setactivehidemaru ではなく、findhidemaru に不具合がある可
能性が高いですが、一応ご連絡しておきます。

[ ]
RE:02999 setactivehidemaru で切り替えがNo.03035
秀丸担当 さん 03/09/24 17:21
 

>とあるので、setactivehidemaru ではなく、findhidemaru に不具合がある可
>能性が高いですが、一応ご連絡しておきます。

状況は再現しませんでした。
なぜか最近findhidemaruが疑わしい報告が増えてきたので、あわせて調査したいと思
いま
す。

[ ]
RE:03035 setactivehidemaru で切り替えがNo.03039
Iranoan さん 03/09/24 18:34
 
 秀丸担当さん今日は、Iranoan です。
> findhidemaruが疑わしい報告が増えてきたので、あわせて調査したいと思
> いま
> す。
 宜しくお願いします。

[ ]