ファイルマネージャ枠への sendmessageNo.05665
santoku さん 10/04/26 13:09
 
ブックマークモードでのことです。
下記のマクロで「ブックマークの整理」を指定します。

再現1
 ×ダイアログは表示されない

再現2
 ○ダイアログが表示される

再現3
 ×ダイアログは表示されない

と言う結果になります。
再現しますか?


loaddll "HmExplorerPane.dll";
#hd = dllfunc("GetWindowHandle", hidemaruhandle(0));
if( !#hd ) goto END;
#n = dllfunc("GetMode", hidemaruhandle(0));
if( #n != 4 ) goto END;

// 再現1
call TEST1 #hd;

// 再現2
// call TEST2 #hd;

// 再現3
// menu "Test 2 実行中"; // メニューやメッセージを表示
// call TEST2 #hd;

END:
freedll;
endmacro;


TEST1:
    menu "モード変更",
        "ブックマークの整理",
        "枠を閉じる";
    if( result == 0 ) return;
    else if( result == 1 ) return;
    else if( result == 2 ) ##cmd = 701;
    else ##cmd = 254;

    ##n = sendmessage(##1, 0x111, ##cmd, 0);
return;

TEST2:
    menu "ブックマークの整理";
    if( result == 0 ) return;
    else if( result == 1 ) ##cmd = 701;

    ##n = sendmessage(##1, 0x111, ##cmd, 0);
return;

[ ]
RE:05665 ファイルマネージャ枠への sendmNo.05670
秀丸担当 さん 10/04/26 15:18
 

>ブックマークモードでのことです。
>下記のマクロで「ブックマークの整理」を指定します。
>
>再現1
> ×ダイアログは表示されない
>
>再現2
> ○ダイアログが表示される
>
>再現3
> ×ダイアログは表示されない
>
>と言う結果になります。
>再現しますか?

この通りではないですが問題そのものは再現させることができました。
マクロ実行から1秒以内に選択すると大丈夫でしたが、1秒経過するとだめでし
た。
枠と本体とは非同期に動いている関係で、もともとマクロは1秒経過すると描画
などの非同期的処理が再開するようになっているのですが、それが影響して実行
されませんでした。
ブックマークの整理など、ダイアログが出るコマンドはサポートするのが難しい
かもしれません。
あるいは、sendmessage実行後はすぐにマクロを終わらせるようにするという制
限をつけないといけないかもしれません。
次のバージョンでは少なくとも実行されずじまいにはならないように修正させて
いただきます。

[ ]