getfocus式についてNo.06316
茶々玉 さん 10/04/28 01:52
 
編集エリアにいるときはファイルマネージャ枠を開き、
ファイルマネージャにいるときは編集エリアに移動するマクロを作成中です。
ついては、以下のように書いていますが、ファイルマネージャ枠にフォーカスがある
場合に一行目の式が実行されません。
どのようにすればよいでしょうか。

#s=getfocus;
if(#s==4){
...
} else {
...

[ ]
RE:06316 getfocus式についてNo.06318
秀丸担当 さん 10/04/28 09:29
 

>編集エリアにいるときはファイルマネージャ枠を開き、
>ファイルマネージャにいるときは編集エリアに移動するマクロを作成中です。
>ついては、以下のように書いていますが、ファイルマネージャ枠にフォーカスがある
>場合に一行目の式が実行されません。
>どのようにすればよいでしょうか。

2番会議室の
http://www.maruo.co.jp/hidesoft/2/x28099_.html#28122
ほうでも少し書かせていただきましたが、キー割り当てでマクロを実行した場合
は、自動的にフォーカスが編集エリアに移動してから実行されるようになってい
ました。
そのため、キー割り当ての場合はgetfocusで4が得られることはありまえんでし
た。
V8.01β4でキー割り当てでマクロ実行した場合でもフォーカスがそのままになる
ようにしてみました。
もしよろしければ試してみていただけると助かります。
以下のページの「次のバージョンのβ版はこちら」からダウンロードできます。
http://hide.maruo.co.jp/software/hidemaru.html

[ ]
RE:06318 getfocus式についてNo.06322
茶々玉 さん 10/04/28 17:07
 
なるほど、わかりました。2番会議室のほうでいただいた回答も理解できました、あ
りがとうございました。
早速試してみます。

[ ]
RE:06322 getfocus式についてNo.06324
茶々玉 さん 10/04/28 17:48
 
最新のバージョンで試してみましたが、やはりファイルマネージャ枠にいるときには
getfocusに対する反応がないようなのですが。。。

[ ]
RE:06324 getfocus式についてNo.06325
秀丸担当 さん 10/04/28 17:55
 

>最新のバージョンで試してみましたが、やはりファイルマネージャ枠にいるときには
>getfocusに対する反応がないようなのですが。。。

こちらで試した限りでは、キー割り当てでF1にマクロ1を割り当てて、マクロ1
にはtest.macを登録して、test.macの内容は

  message str(getfocus);

として、ファイルマネージャ枠の「フォルダ」モードで、フォルダツリーにフ
ォーカスがあるときにF1を押したら 4 と表示されました。
V8.01β4です。

Ctrl+数字に割り当てが無いときの標準の動作でマクロが起動する動作がファイ
ルマネージャ枠上で効かないという話もありまして、こちらは修正を検討してい
ます。
もしキー割り当てが効かないということでしたら、F1キーに割り当てるなどをし
てみると何かわかるかもしれません。
上記の手順と何か違うようなことがあるようでしたら、詳しく教えていただける
と何かわかるかもしれません。

[ ]
RE:06325 getfocus式についてNo.06340
茶々玉 さん 10/05/30 17:22
 
改めてお教えいただければ幸いです。具体的には、次のようなマクロを動作させたい
のです。

#s=getfocus;
if(#s==4){ //ファイルマネージャ枠にいる場合
 setfocus 1; //→編集エリアに移動
} else { //編集エリアにいる場合
 loaddll "HmExplorerPane.dll"; //ファイルマネージャ枠が開いているか
 #h=dllfunc("GetWindowHandle",hidemaruhandle(0));
 if( !#h==0 ){ //開いている場合→閉じる
  loaddll "HmExplorerPane.dll";
  #h=dllfunc("GetWindowHandle",hidemaruhandle(0));
  #ret=sendmessage(#h,0x111,254,0);
 } else { //開いていない場合→プロジェクトで開く
  loaddll "HmExplorerPane.dll";
  #mode=5;
  #ret=dllfunc("SetMode",hidemaruhandle(0),#mode);
  setfocus 4;
 }
}
endmacro;

この場合、#s==4となることがありません。
秀丸のバージョンは、8.01 β5 です。よろしくお願いいたします。

[ ]
RE:06340 getfocus式についてNo.06341
秀丸担当 さん 10/05/31 10:00
 

>#s=getfocus;
>if(#s==4){ //ファイルマネージャ枠にいる場合

ここで #s==4 とならないということでしたら、V8.01β4までで、Ctrl+1などの
キー割り当てされていないときと標準の動作でマクロ実行しようとすると、マク
ロ実行がそもそもされないということがありました。
β5以降でしたら大丈夫のはずだと思います。
ファイルマネージャ枠のモードやフォーカスの状態や、どのような操作でマクロ
実行されたかなどを教えていただけると何かわかるかもしれません。

> } else { //開いていない場合→プロジェクトで開く
>  loaddll "HmExplorerPane.dll";
>  #mode=5;
>  #ret=dllfunc("SetMode",hidemaruhandle(0),#mode);
>  setfocus 4;
> }
>}

ここの部分の結果が setfocus 4; がうまくいかずフォーカス移動されないという
ことでしたら、いろいろ確認してみたところ、そうなる場合があることがわかり
ました。
SetModeは都合あって非同期で行われていて、この非同期の処理が終わらないうち
にsetfocusされてしまうとうまくいきませんでした。
最後のモードがフォルダモードだったとき、ツリーの作成に時間がかかるような
ときにそうなることがあるようです。2回目からは早いですが、秀丸エディタ起
動時の最初は遅いです。
こういう場合もsetfocusがうまくできるように、次のバージョンで改善させてい
ただきます。

[ ]
RE:06325 getfocus式についてNo.06343
茶々玉 さん 10/06/02 15:10
 
質問が不明瞭で申し訳ありません。

>
>>#s=getfocus;
>>if(#s==4){ //ファイルマネージャ枠にいる場合
>
>ここで #s==4 とならないということでしたら、V8.01β4までで、Ctrl+1などの
>キー割り当てされていないときと標準の動作でマクロ実行しようとすると、マク
>ロ実行がそもそもされないということがありました。
>β5以降でしたら大丈夫のはずだと思います。
>ファイルマネージャ枠のモードやフォーカスの状態や、どのような操作でマクロ
>実行されたかなどを教えていただけると何かわかるかもしれません。
>

お聞きしたかったのは、この部分のことです。
一度、編集エリアにフォーカスがある状態から当該マクロを実行して、ファイルマ
ネージャ枠が開かれ、フォーカスが移った後、再度当該マクロを実行した場合、編集
エリアにフォーカスが戻ってほしいのですが、全く反応がありません。
マクロの実行は、F5に割り当てて行っています。
これには、どのように対応すればよいでしょうか。

[ ]
RE:06343 getfocus式についてNo.06344
秀丸担当 さん 10/06/02 15:21
 

>マクロの実行は、F5に割り当てて行っています。
>これには、どのように対応すればよいでしょうか。

F5に割り当てたところ確かにできませんでした。
F5はファイルマネージャ枠においては「最新の情報に更新」が優先的に動くよう
になっていて、マクロがそもそも実行されていないようです。
他にも、ファイルマネージャ枠の▼ボタンを押すとメニューが出てきますが、こ
のメニュー項目にあるキー操作は優先されてしまいます。
いまのところこのキー操作を無効にする設定は無いため、現時点では他のキーに
割り当てていただくしかないと思います。
キー操作のカスタマイズについては他の方からも意見があって、そういう場合困
るということで、今後の課題とさせていただきます。

[ ]
RE:06344 getfocus式についてNo.06345
茶々玉 さん 10/06/02 15:47
 
わかりました!どうもありがとうございました。

F5への割当では、ファイルマネージャ枠にいるときの動作のみがなかったため、getf
ocus==4の問題かと思っていましたが(そのほかのマクロ動作には反応します)、特
にF5はファイルマネージャ枠では禁忌、と現時点では考えればよいのですね。
他のキーに割り当てたところ、問題なく動作しました。その方向で考えてみます。

[ ]