【要望】フォルダツリーからのツール実行No.04569
eamat. さん 14/02/08 11:45
 
V1.07 β16 / win8

ツール登録した外部exeにキー割り当てし、ショートカットキーでの起動を考えています
対象の選択ファイルは複数ファイルの時もフォルダの時もあるため
"c:\hoge.exe" %1 の形式でパラメータを渡しています。

フォルダツリーからフォルダを選択しツール実行したところ
パラメータが空の状態でツール起動になりました。
また、ファイルペイン上でファイル選択後にフォーカスをツリーに移しツール実行
非フォーカスのファイルペインが優先されてファイルが渡されました。
(尚、ファイルペイン上でサブフォルダを選択した場合はフォルダも正常に渡されま
す)

現状ですとフォーカスのあるなしにかかわらず常にファイルペインで選択したものが
パラメータとして認識される仕様だと思われますが
これをフォーカスの状態を見てツリー(タブごとのツリー)からの取得にも
対応していただくのは難しいでしょうか?

[ ]
RE:04569 【要望】フォルダツリーからのツNo.04571
秀丸担当 さん 14/02/10 11:59
 

ブックマークやツールに登録した%1などは、確かにファイル一覧だけが対象で、
そういう仕様になっています。
この挙動を変更するのは、互換性の配慮から難しいです。

現状でなんとかするとしたら、スクリプトを使う方法が考えられます。
例えば以下のテキストを「c:\xxxx\test.js」として保存して、ツール項目のプ
ロパティの「パス」に「js:c:\xxxx\test.js」と書いておくとそういう挙動のス
クリプトにできます。


strExe = "c:\\folder\\hoge.exe";
strParam = "";
if(GetFocusTarget()==1){
  var iItem=GetNextItem(-1,2);
  if(iItem>=0){
    while( iItem >= 0 ) {
      strParam=strParam+" \""+GetItemPath(iItem)+"\"";
      iItem=GetNextItem(iItem,2);
    }
  }
  new ActiveXObject("Shell.Application").ShellExecute(strExe,strParam);
} else if(GetFocusTarget()==2){
  strParam = "\""+GetDirectory()+"\"";
  new ActiveXObject("Shell.Application").ShellExecute(strExe,strParam);
}


jsの場合はスクリプトの文字列内の「\」を「\\」と書かなくてはいけないので
注意が必要です。
ちょっと面倒な方法ですが、この方法でどうでしょうか。

[ ]
RE:04571 【要望】フォルダツリーからのツNo.04572
eamat. さん 14/02/11 00:37
 
秀丸担当様

ご指南ありがとうございます。
基本動作については仕様とのことで了解しました。
JScriptに明るくないためそちら方面での解決には思い至りませんでしたが
お陰様で、いただいたスクリプトに作業用フォルダ指定を入れこむことで
無事希望の動作にできました。どうもありがとうございます!

strExe = "hoge.exe";
strDir = "c:\\hage";
strParam = "";
if(GetFocusTarget()==1){
  var iItem=GetNextItem(-1,2);
  if(iItem>=0){
    while( iItem >= 0 ) {
      strParam=strParam+" \""+GetItemPath(iItem)+"\"";
      iItem=GetNextItem(iItem,2);
    }
  }
  new ActiveXObject("Shell.Application").ShellExecute(strExe,strParam,strDir);
} else if(GetFocusTarget()==2){
  strParam = "\""+GetDirectory()+"\"";
  new ActiveXObject("Shell.Application").ShellExecute(strExe,strParam,strDir);
}


[ ]