_User *setcust _User:name=param , %*getcust(_User:name)
・PPxの設定項目として用意されています。
・PPx内で共通です。(PPc/PPv/PPtray等の何処からでも参照・変更できます。)
・プロセスが終了しても内容は失われません。
PPx間で内容を受け渡ししたいときや、長期に渡り設定を記憶する必要があるときに適しています。
_User:hoge0 _User:hoge1 _User:hoge2 _User:hoge3...というような、連番付き変数に登録する仕組みと、呼び出す仕組みとを作ってみる。
登録
*script %0\Script\setSeqUserData.js,hoge,%FCD
とすれば、_User:hoge0 _User:hoge1 _User:hoge2...にカレントファイルのパスを登録する。
setSeqUserData.js
//!*script
// 第一引数 : ユーザデータ(hoge1 hoge2 hoge3...のhoge)
// 第二引数 : 登録したいデータ(%FCDなど)
// *script %0\Script\setSeqUserData.js,hoge,%FCD のようにして使う。
// この例だと、_User:hoge0 _User:hoge1 _User:hoge2...に順番にカレントファイルを登録する
// 引数がなければ終了
if (PPx.Arguments.Length < 2){
PPx.SetPopLineMessage("引数が正しくありません。");
PPx.Quit();
}
var cmd = PPx.Arguments.Item(0);
var macro = PPx.Arguments.Item(1);
// 既に登録されていたら登録しない
for (var i = 0; i < 5; i++) {
if (PPx.Extract("%*getcust\(_User:"+cmd+i+"\)") == PPx.Extract(macro)){
PPx.SetPopLineMessage("既に登録されてます");
PPx.Quit();
}
}
// _User:に登録
for (var i = 0; i < 5; i++) {
if (!PPx.Extract("%*getcust\(_User:"+cmd+i+"\)")){
PPx.Execute("*setcust _User:"+cmd+i+" = "+macro);
PPx.SetPopLineMessage(cmd+i+"に登録しました");
break;
}
}
呼び出し
%*script(%0\Script\getSeqUserData.js,hoge)
とすれば、_User:hoge0 _User:hoge1 _User:hoge2...の中身を順次取得する。
getSeqUserData.js
//!*script
// 第一引数: ユーザーデータ(hoge0 hoge1 hoge2...のhoge)
// 実行すると、hoge0 hoge1 hoge2 hoge3...の値を返す
// %*script(%0\Script\getSeqUserData.js,hoge)のようにして使う
// 引数がなければ終了
if (PPx.Arguments.Length < 1){
PPx.SetPopLineMessage("引数が正しくありません。");
PPx.Quit(-1);
}
var cmd = PPx.Arguments.Item(0);
// cmd0があるかどうかをチェック
if (!PPx.Extract("%*getcust\(_User:"+cmd+0+"\)")){
PPx.SetPopLineMessage("コマンドが空です");
PPx.Quit(-1);
}
// cmd_idに1を足す。なければ0を入力
if (!PPx.Extract("%*getcust\(_User:"+cmd+"_id\)")){
PPx.Execute("*setcust _User:"+cmd+"_id = 0");
}else {
var i = parseInt(PPx.Extract("%*getcust\(_User:"+cmd+"_id\)")) + 1;
PPx.Execute("*setcust _User:"+cmd+"_id = "+ i);
}
var i2 = PPx.Extract("%*getcust\(_User:"+cmd+"_id\)");
// commandを実行
if (PPx.Extract("%*getcust\(_User:"+cmd+i2+"\)")){
PPx.Result = PPx.Extract("%*getcust\(_User:"+cmd+i2+"\)");
}else{
PPx.Execute("*setcust _User:"+cmd+"_id = 0");
PPx.Result = PPx.Extract("%*getcust\(_User:"+cmd+0+"\)");
}
参考:ブックマークのローテート - ppxmemo
0 件のコメント:
コメントを投稿