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
}

0 件のコメント:

コメントを投稿