ファイルマネージャ枠についてNo.28099
茶々玉 さん 10/04/22 22:47
 
(1) メニューの「ウィンドウ」以下では、おそらく「ファイルマネージャ枠の切り替
え」であろうものが「ファイルリスト枠の切り替え」になっています。これは、ファ
イルマネージャ枠の切り替えではないのですか?

(2) ファイルマネージャ枠で、ヒストリ・ファイル一覧・ブックマーク等はキーボー
ドから直接切り替えできないのでしょうか。

以上、ご教示いただければ幸いです。よろしくお願いします。

[ ]
RE:28099 ファイルマネージャ枠についてNo.28102
秀丸担当 さん 10/04/23 09:33
 

>(1) メニューの「ウィンドウ」以下では、おそらく「ファイルマネージャ枠の切り替
>え」であろうものが「ファイルリスト枠の切り替え」になっています。これは、ファ
>イルマネージャ枠の切り替えではないのですか?

その通りでした。
ご指摘ありがとうございます。
これは「ファイルマネージャ枠切り替え」の誤りでした。
V8.01で修正させていただきます。

>(2) ファイルマネージャ枠で、ヒストリ・ファイル一覧・ブックマーク等はキーボー
>ドから直接切り替えできないのでしょうか。

ファイルマネージャ枠にフォーカスがあるときであれば、アプリケーションキー
(「目」のようなキー)でメニューが出るので、メニューから選んで変更する方
法があります。
あと、ヘルプには書かれていませんでしたがCtrl+PageUp/PageDownでも切り替え
できます。

直接切り替えるキー割り当て可能なコマンドというのはいまのところありません
が、マクロを作ると直接切り替えもできると思います。

例えば、以下のようなマクロを作成します。

  loaddll "HmExplorerPane.dll";
  #mode=0;
  #ret=dllfunc("SetMode",hidemaruhandle(0),#mode);
  setfocus 4;

#modeの値を0〜6の範囲で変えると各種モードになります。
マクロをマクロファイル用のフォルダに保存して、[マクロ]→[マクロ登録]より
登録し、登録したマクロをキー割り当てしておくとキーで切り替え可能にできま
した。

[ ]
RE:28102 ファイルマネージャ枠についてNo.28117
茶々玉 さん 10/04/26 20:34
 
ありがとうございました。こちらも無事実現しました。

しかし、(2)のmodeの番号と、メニューでの番号とが全く違うのはなぜでしょうか?
こういう細かな違いが、いつもマクロをつくるときになにかと気になるのですが。。。

[ ]
RE:28117 ファイルマネージャ枠についてNo.28119
茶々玉 さん 10/04/26 23:52
 
それから、さらに質問です。
ファイルマネージャ枠をとじるマクロはどのように書けばよいでしょうか。
sendmessage を使うことになるのかと思いますが、その記述式がわかりません。

[ ]
RE:28119 ファイルマネージャ枠についてNo.28120
茶々玉 さん 10/04/26 23:56
 
連投失礼します。
ファイルマネージャ枠が開いているかどうか(フォーカスがあるかどうか)の判別は、
どのようにすれば可能でしょうか。

[ ]
RE:28120 ファイルマネージャ枠についてNo.28122
秀丸担当 さん 10/04/27 09:51
 

>(2)のmodeの番号と、メニューでの番号とが全く違うのはなぜでしょうか?

特に意味は無いですが、作っているときに「フォルダ+ファイル一覧」モードを
一番最後に付け足して作ったため、結果的にこうなってしまいました。

>ファイルマネージャ枠をとじるマクロはどのように書けばよいでしょうか。
>sendmessage を使うことになるのかと思いますが、その記述式がわかりません。

マクロヘルプのサンプルにあるものの数値を変えるとできると思います。
0x111の部分は変えてはいけなくて、その次の数値がコマンド値を意味していま
す。

  loaddll "HmExplorerPane.dll";
  #h=dllfunc("GetWindowHandle",hidemaruhandle(0));
  #ret=sendmessage(#h,0x111,254,0); //254=枠を閉じる
  endmacro;


>ファイルマネージャ枠が開いているかどうか(フォーカスがあるかどうか)の判別は、
>どのようにすれば可能でしょうか。

開いているかどうかは、

  loaddll "HmExplorerPane.dll";
  #h=dllfunc("GetWindowHandle",hidemaruhandle(0));

として、#hが0かどうかで判別できると思います。

フォーカスがあるかどうかはうまく判別できませんでした。
getfocusというキーワードもあるのですが、ファイルマネージャ枠からキー割り
当てでマクロ実行したときは自動的に編集エリアに移動してからマクロ実行する
ようになっているのでフォーカスの判別はあまり意味が無い状況です。
理由があってそうしていたのと思うのですが、メニューやツールバーの場合はフ
ォーカス維持したままできるので、キー割り当ての場合もできないか調べてみて、
できそうでれば修正を検討したいと思います。

[ ]
RE:28122 ファイルマネージャ枠についてNo.28132
茶々玉 さん 10/04/28 01:32
 
丁寧にありがとうございました。必要なことは全て理解できました。
質問を少し間違えておりまして、

>>ファイルマネージャ枠が開いているかどうか(フォーカスがあるかどうか)の判別
>は、

は、「フォーカスがあるかではなく開いているかだけを確認したい」ということでし
たので、教えていただいた方法で十分対応できました。

sendmessage の記述式についてですが、ヘルプのGetWindowHandleのところに例文が
ありますが、それを拝見しますと、

> loaddll "HmExplorerPane.dll";
> #h=dllfunc("GetWindowHandle",hidemaruhandle(0));
> #ret=sendmessage(#h,0x111/*WM_COMMAND*/,251,0); //251=1つ上のフォルダ

とあり、二番目の項目の「/*WM_COMMAND*/」とは何か、四番目の項目の意味は何か、
それがわかりませんでした。それらはどういうものでしょうか。

[ ]
RE:28132 ファイルマネージャ枠についてNo.28134
秀丸担当 さん 10/04/28 09:23
 

>とあり、二番目の項目の「/*WM_COMMAND*/」とは何か、四番目の項目の意味は何か、
>それがわかりませんでした。それらはどういうものでしょうか。

sendmessageというのは、Windows APIのSendMessage関数と同じもので、本来秀
丸エディタのマクロ用の関数ではなくて、Windowsプログラミングで使われるも
のです。
それを、秀丸エディタのマクロ上でも使えるようにしたものがsendmessageにな
っています。
Windows APIのSendMessage関数については、Microsoftの以下のページに説明が
あります。
http://msdn.microsoft.com/ja-jp/library/cc411022.aspx

秀丸エディタでも同じ意味で使えますが、本来これはWindowsプログラミング用
のもので、使える場面は限定されてしまいます。
使い方を間違えると異常終了したらい不安定になってしまう可能性もあります。

WM_COMMANDというのはメニューなどからコマンドを選んだときなどにウィンドウ
に送られるメッセージで、数値にすると16進数で0x0111になります。
メッセージにはいろいろ種類があってメッセージによって第三,四パラメータの
意味も変わってきますが、マクロからはどんなメッセージでも使えてしまうわけ
ではないので、こういう値で決まっているものと思っていただいてもいいかもし
れないです。

[ ]
RE:28134 ファイルマネージャ枠についてNo.28142
茶々玉 さん 10/04/28 17:09
 
やっと理解できました。丁寧にありがとうございました。

[ ]