setactivehidemaruが動作しないNo.06488
colder さん 11/05/10 17:42
 
タブモードでないとき、
田楽DLLを利用してダイアログを出したままにしていると、
setactivehidemaruが失敗していないにもかかわらず、
アクティブな秀丸が切り替わらないことがあります。
この動作は仕様でしょうか?

環境 win7+秀丸8.10β3

//以下確認用のマクロ
loaddll currentmacrodirectory+"\\dengakudll.dll";
if(!result) loaddll macrodir+"\\dengakudll.dll";
if(!result) loaddll hidemarudir+"\\dengakudll.dll";
if(!result) message "田楽dllのロードに失敗";
##n = hidemaruhandle(0);
if((!dllfunc("NEWDIALOG","テスト",20)) ||
   (!dllfunc("NEWCONTROL","okcancel")) ||
   (!dllfunc("SHOWDIALOG",hidemaruhandle(0),0))) endmacro;;
while(1) {
    $$name = "";
    while(strlen($$name) == 0) { $$name = dllfuncstr("WAITCTRLNOTIFY",10); }
    if($$name=="1"){
        openfile "/h";
        ##h = hidemaruhandle(0);
        setactivehidemaru ##n;
        if(!result) message "setactivehidemaruが失敗";
        closehidemaru ##h;
        if(!result) message "クローズに失敗";
    }
    if($$name != "") break;
}
if (!dllfunc("ENDDIALOG")) endmacro;
freedll;
endmacro;

[ ]
RE:06488 setactivehidemaruが動作しないNo.06496
h-tom さん 11/05/11 00:10
 

h-tom です。

>タブモードでないとき、
>田楽DLLを利用してダイアログを出したままにしていると、
>setactivehidemaruが失敗していないにもかかわらず、
>アクティブな秀丸が切り替わらないことがあります。
>この動作は仕様でしょうか?

以下の内容と同じかな?
  http://homepage3.nifty.com/_htom/macro/tips_dengaku.html#N1.1
前に杉浦さんのコメントを見た覚えがあるのですが、見つけられないです。

[ ]
RE:06496 setactivehidemaruが動作しないNo.06499
秀丸担当 さん 11/05/11 11:10
 

>タブモードでないとき、
>田楽DLLを利用してダイアログを出したままにしていると、
>setactivehidemaruが失敗していないにもかかわらず、
>アクティブな秀丸が切り替わらないことがあります。

マクロの通りにして確認することができました。
調べてみたところ、田楽のダイアログが出ているときは秀丸エディタ本体とは別
のスレッドがユーザーインターフェースを持っていて、そちらがアクティブなた
め、SetForegroundWindowがうまくいっていないことが関係しているようです。
こういう場合も問題が起きないようにV8.10β4で対策を入れさせていただきます。

[ ]