2016年1月27日水曜日

「最近使った項目」をメニュー表示

Windowsにある「最近使った項目」をPPxでもやってみる。




以下をScriptフォルダに保存。

recentmenu.js
//!*script

// ユーザー定義ヒストリxを10件まで表示するメニュー
// 選択すると実行する

// 履歴がなければ終了
if (PPx.Extract("%hx0") == ""){
  PPx.SetPopLineMessage("履歴がありません。");
  PPx.Quit(-1);
}

fso = PPx.CreateObject("Scripting.FileSystemObject");

// メニューの削除
PPx.Execute("*setcust -|M_hoehoe =");

// メニューの登録
for (var i = 0; i < 10; i++) {
  if (PPx.Extract("%hx"+i) != ""){
    fp = PPx.Extract("%hx"+i);
    PPx.Execute('*setcust M_hoehoe:&'+i+' '+fso.GetFileName(fp)+'=*launch '+'%*name(DC,'+fp+')');
  } else {
    break;
  }
}

// メニューを開く
PPx.Execute("%M_hoehoe,0");

以下を編集して取込。
KC_main = { ; PPcメイン窓
^ENTER ,*addhistory x,%FDC %: %K"@Z"
H ,*script %0\Script\recentmenu.js
}

やり方


Ctrl+Enterを押すと、カーソル下のファイルを実行し、かつそのファイルのパスをユーザー定義ヒストリxに登録する(ちなみにヒストリはカスタマイザーのその他タブで見れる)。

Hを押すと、そのヒストリを10件までメニューで表示する。項目を選択すると、そのパスを実行する。

2016年1月19日火曜日

壁紙をランダムに表示

PPx起動時に、壁紙をランダムで表示できたら楽しいんじゃないかと思って作ってみた。


以下をScriptフォルダに保存。

random.js
//!*script

// 第一引数:フォルダパス
// ランダムにファイルを選択して返すスクリプト

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var fso = PPx.CreateObject("Scripting.FileSystemObject");
var fn = PPx.Arguments.Item(0);

// フォルダが存在しなければ終了
if (fso.FolderExists(fn) == false) {
  PPx.SetPopLineMessage(fn+"は存在しません");
  PPx.Quit(-1);
}

//  Folderオブジェクトを取得
var folder = fso.GetFolder(fn);

//  ファイルリストを取得
var e = new Enumerator( folder.Files );
files = new Array(); 
for( ; !e.atEnd(); e.moveNext()) {
  files.push(e.item().Name);
}

// ファイルが存在しなければ終了
if (files.length == 0) {
  PPx.SetPopLineMessage("ファイルがありません");
  PPx.Quit(-1);
}

// ファイルをランダムに選択
PPx.Result = fso.BuildPath(fn, files[ Math.floor( Math.random() * files.length ) ]);

//  オブジェクトを解放
fso = null;

これは、引数にフォルダパスを取り、ファイルパスをランダムに返すスクリプト。

次に、以下を編集して取り込み。画像フォルダのパスは適当に読み替えよう。
KC_main = {
FIRSTEVENT , *customize X_bg:Path=%*script(%0\Script\random.js,"D:\Work\画像フォルダ")
}

これで、PPc起動時に、指定したフォルダ内(ここではD:\Work\画像フォルダ)のファイルをランダムで壁紙にする。
当然壁紙を表示する設定にしていないと意味ないので、非表示にしている場合はカスタマイザーから設定しよう。


追記:2016/02/18


上の設定だと、新しい窓を開くたびに壁紙が変更されてしまう。
初回起動時のみ壁紙を変更したいなら、以下を編集して取込。
KC_main = {
FIRSTEVENT , *ifmatch !//,%2 %: *customize X_bg:Path=%*script(%0\Script\random.js,"D:\Work\画像フォルダ") %: *stop
}