マクロでファイルマネージャ枠表示時のフNo.05391
h-tom さん 10/03/17 11:00
 

h-tom です。

OS:Windows Vista(32bit SP2)

ファイルマネージャ枠の表示を切り替えるマクロを作っていたのですが、
β45だと、最後の「setfocus 1」が、効いていないようで、ファイル
マネージャ枠にフォーカスが当たったままになります。

ただ、症状があまり安定していなくて、エディタ部にフォーカスが、戻る
場合もあります。
そちらで再現しますかね?

// ここから
loaddll "HmExplorerPane.dll";
if(!result){
    message "HmExplorerPane.dllのロードに失敗しました。マクロを終了します。";
    endmacro;
}
//ハンドル取得
#handle = dllfunc("GetWindowHandle",hidemaruhandle(0));
if(#handle == 0){
    //表示されていないなら表示させる
    #ret = dllfunc("SetMode",hidemaruhandle(0),0);
    #mode = -1;
}else{
    #mode = dllfunc("GetMode",hidemaruhandle(0));
}
#mode = #mode + 1;
//範囲外なら初期値(ゼロ)へ
if(#mode > 6) #mode = 0;
//モード設定
#ret = dllfunc("SetMode",hidemaruhandle(0),#mode);
//枠にフォーカスが移動してしまうので、編集エリアに戻す。
setfocus 1;
freedll;
endmacro;
// ここまで

[ ]
RE:05391 マクロでファイルマネージャ枠表No.05392
秀丸担当 さん 10/03/17 11:37
 

>ファイルマネージャ枠の表示を切り替えるマクロを作っていたのですが、
>β45だと、最後の「setfocus 1」が、効いていないようで、ファイル
>マネージャ枠にフォーカスが当たったままになります。
>
>ただ、症状があまり安定していなくて、エディタ部にフォーカスが、戻る
>場合もあります。
>そちらで再現しますかね?

マクロの通りにして再現させることができました。
ありがとうございます。
訳あってファイルマネージャ枠の処理は遅延して行われていて、マクロでフォー
カス移動していてもうまくできていないようです。
SetModeの仕様を変更して、フォーカス移動しないようにするとうまくいきそう
です。
試しにやってみたところ、フォーカス移動したい場合はその後 setfocus 4; と
することもできました。
そのほうがいろいろ都合がよさそうだと思うので、次でSetModeの動作を変更し
てしまおうと思います。

[ ]