[リストへもどる]
一括表示

タイトルscriptのPPx.Entry.Indexに関して
記事No3688
投稿日: 2021/07/12(Mon) 15:52
投稿者tanaka
 このソフトを愛用させて頂いており、大変役にたっています。
さてタイトルの件ですが、
cursor位置はエントリーの「0」にある場合
PPx.Entry.Index = xxx;    xxxは「0」以外の位置
PPx.echo(PPx.Entry.Name);
を実行すると、カーソルの位置の「.」が表示されます。
ちなみに
PPx.EntryIndex = xxx;
PPx.echo(PPx.Entry.Name);
では、xxxのエントリー名が表示されます。(help通りcursorは、移動します)。マークには、無関係で同じ動作をします。
 そこで、cursorを移動せずにエントリー名を取得するscriptはどのように
記述するのか教えて頂けないでしょか。それとも設定に問題が在るのでしょうか
ppx versionは 1.79 です。

 --- 追記 21/07/13 ---
 2個起動時のスクリプトで現在窓と反対窓の親directory取得方法において、
下記を実行すると両方とも現在窓の親directoryが表示されます。
 PPx.Execute("%K\"@\\^C") //現在窓
 PPx.echo(PPx.Clipboard)
 PPx.Execute("%K~\"@\\^C") //反対窓
 PPx.echo(PPx.Clipboard)
そこで、次のようにすると要望の結果が得られます。
 PPx.Execute("%K\"@\\^C") //現在窓
 PPx.echo(PPx.Clipboard)
 PPx.Execute("%K~\"@\\^C") //反対窓
 PPx.echo(PPx.Clipboard)
 PPx.Execute("%K~\"@\\^C") //反対窓を再実行
 PPx.echo(PPx.Clipboard)

PPx.Clipboardのchangeに時間が必要かと思い反対窓にwaitをいれると
 PPx.Execute("%K~\"@\\^C") //反対窓
 PPx.Execute("*wait 3000")
 PPx.echo(PPx.Clipboard)
PPx.Clipboardは空になります。
現在窓のwaitは、正常に動作します。
 PPx.Execute("%K\"@\\^C") //現在窓
 PPx.Execute("*wait 3000")
 PPx.echo(PPx.Clipboard)

 正常に動作した記述では気持がわるいので、普通の記述で
両窓の親directory取得スクリプト記述を教えて頂けないでしょうか。


タイトルRe: scriptのPPx.Entry.Indexに関して
記事No3690
投稿日: 2021/07/13(Tue) 21:33
投稿者TORO
Excel や Word のマクロの選択関係(Range等)を知っていると
分かりやすいのですが、PPx.Entryは、位置を記憶している
オブジェクトを生成します。一旦「var entry = PPx.Entry」と
作成したオブジェクトを変数に入れた後、「entry.index = xxx」と
位置を変え、その後「entry.Name」で変えた位置の名前を
参照する必要があります。

「PPx.Entry.Index = xxx」「PPx.Entry.Name」と続けても
両者は別オブジェクトなので、前者で設定した位置が引き
継がれずに、初期値のカーソル位置が後者で参照されます。


親ディレクトリについては、クリップボードやスクリプトを
使わなくても%1,%2 を%*name 等で加工すれば得られます。
例えば次のようにパスの相対指定で親を指定します。
*linemessage %*name(CD,"%1\..") / %*name(CD,"%2\..")


タイトルRe^2: scriptのPPx.Entry.Indexに関して
記事No3692
投稿日: 2021/07/17(Sat) 13:02
投稿者tanaka
 「var entry = PPx.Entry」の記述有難うございます。
PPXSCR.TXTに説明されていましたが、理解できませんでした。
 var entry = PPx.Entry;
 for (i = 0; i < entry.count; i++) {
  entry.index = i;
  PPx.echo(entry.name);
 }
のようにすれば、実行できることがわかりました。
 さらに、教えて頂きたいことがあります。scriptの説明に
「foreach(列挙)ができます。」とあり、上記をforeachを使って記述しようと
試行錯誤しましたが、実現できませんでした。現在は、上記記述で間に合って
おり時間は問いませんので、foreach(列挙)の使用方法を御教授ください。

 %1,%2 を%*nameの件ですが、こちらの情報不足で申し訳ありません。
仮想directry内から見た親directry(仮想ファイル)のことです。%*nameでは、
実際の親directryになります。色々試しましたが「PPx.echo()」が必ず必要でした。
断念して、AutoHotKeyで対処し問題なく動作しています。


タイトルRe^3: scriptのPPx.Entry.Indexに関して
記事No3693
投稿日: 2021/07/18(Sun) 12:05
投稿者TORO
foreach の例は、sample.js になります。JScript の場合は、
foreach がそのまま使えるわけでは無く、Enumerator を使う
ことになります。このへんは WSH の解説をしているサイトで
確認してください。

仮想directry内から見た親directry についてですが、
7-zip64.dll 等を使っている場合は、%1,%2 がそのまま
書庫ファイル名になっています。
また、「「PPx.echo()」が必ず必要」となっているのは、
多分ダイアログを表示して待っていないと受け渡しができない
記載をしていると思われます。
前に提示されている箇所以外で、並行動作しているところが
あると思われますので一度全体を見直してみてください。


タイトルRe^4: scriptのPPx.Entry.Indexに関して
記事No3697
投稿日: 2021/07/18(Sun) 18:04
投稿者tanaka
 仮想directry内ではなく、*whereisで作成したListFileから
見た親directryでした。こちらの説明不足ですみません。

 「ダイアログを表示して待」とありますが、
NG --- 記述1 ---
 //!*script
 PPx.Execute("%K\"@\\^C"); //現在窓=C:\Windows
 xxx = Clipboard + " / ";
 PPx.Execute("%K~\"@\\^C"); //反対窓=C:\Users
 xxx += Clipboard;
 PPx.Echo(xxx); //結果 C:\Windows & C:\Windows

OK --- 記述2 (記述1にEchoと反対窓コマンドを2回に) ---
 //!*script
 PPx.Execute("%K\"@\\^C");
 xxx = Clipboard + " / ";
 PPx.Execute("%K~\"@\\^C");
 PPx.Echo(); //記述1に追加
 PPx.Execute("%K~\"@\\^C"); //記述1に追加
 xxx += Clipboard;
 PPx.Echo(xxx); //結果 C:\Windows / C:\Users

NG --- 記述3 (記述2を修正待つ処理をPPx.EchoからSleepに変更 ---
 //!*script
 PPx.Execute("%K\"@\\^C");
 xxx = Clipboard + " / ";
 PPx.Execute("%K~\"@\\^C");
 PPx.Sleep(3000); //記述2変更
 PPx.Execute("%K~\"@\\^C");
 xxx += Clipboard;
 PPx.Echo(xxx); //結果 C:\Windows /

のようになります。記述3で、PPx.echo実行時に両方のステータス行に
ディレクトリ名が表示されるので、PPx.echoにより処理が
開始されるようです。記述は上記だけで、ほかの部分はありません。
 上記を%1 / %2 / *nameで簡単にできますが、ListFileでは、
親directry(ファイル名)が取得できません。

 現在は、JscriptとAuthotkeyを利用して親directryが取得
出来ており、問題なく動作してしています。
 色々とお手を煩わして、申し訳ありません。お陰で目的の
スクリプトができ、ありがとうございました。


タイトルRe^5: scriptのPPx.Entry.Indexに関して
記事No3701
投稿日: 2021/07/18(Sun) 23:20
投稿者TORO
Listfile の仮想ディレクトリでしたか。
それでしたら、%*name(D,"%FDV") %*name(D,"%~FDV") を
試してみてください。


タイトルRe^6: scriptのPPx.Entry.Indexに関して
記事No3704
投稿日: 2021/07/19(Mon) 11:26
投稿者tanaka
 今まで「%F」は「S,V」以外のみ使用し、そのため「V」に気づきませんでした。
「V」は通常のdirectoryにも使用できるようなので、Jscript単独で記述できました。

xxx = PPx.Extract("%K%FDV") + " & "; //現在窓 A
xxx += PPx.Extract("%K%~FDV"); //現在窓 B
PPx.Echo(xxx); //結果 A & B