/**
 * ログオンスクリーンまたは、個人のデスクトップの壁紙をランダムに変更する。
 * 
 * $0 [/p] [/d:dir] [/s:レイアウトスタイル]
 *
 * デフォルトはログオンスクリーンの壁紙変更。
 * 画像は指定ディレクトリ内に置かれているビットマップから選ばれる。
 *
 * /p	個人のデスクトップ壁紙変更
 * /s	0:中央、1:タイル、2:引き伸ばし（デフォルト）
 * /d	画像ディレクトリ
 *			ログオンスクリーン壁紙変更時のデフォルトは「共有ピクチャ\randomwp」
 *			個人のデスクトップ壁紙変更時のデフォルトは「マイピクチャ\randomwp」
 *
 * SystemParametersInfoをjsから呼び出す道がわかんないので、個人のデスクトップ壁紙変更は
 * 実行時点で反映されず次回ログオン時に反映されます。。。
 */


var	dir_pic = "randomwp";

var	wsh = WScript.CreateObject( "WScript.Shell" );
var	fso = WScript.CreateObject( "Scripting.FileSystemObject" );
var	dir_wp = wsh.RegRead( "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\CommonPictures" ) + "\\" + dir_pic ;
var	wp_style = 2;

var	reg_key = "HKEY_USERS\\.DEFAULT\\Control Panel\\Desktop";

var	argv = WScript.Arguments;

if( argv.Named.Exists( "p" ) )
{
	// 個人のデスクトップ
	reg_key = "HKEY_CURRENT_USER\\Control Panel\\Desktop";
	dir_wp = wsh.RegRead( "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\My Pictures" ) + "\\" + dir_pic ;
}
else
{
	// ログオンスクリーン
}

if( argv.Named.Exists( "s" ) )
{
	// レイアウトスタイル
	var	s = argv.Named( "s" );
	if( s == "0" || s == "1" || s == "2" )
	{
		wp_style = s;
	}
}

if( d = argv.Named.Exists( "d" ) )
{
	// 画像ディレクトリ
	var	d = argv.Named( "d" );
	dir_wp = d;
}

try 
{
	if( fso.FolderExists( dir_wp ) )
	{
		// 画像ディレクトリが存在する
		var	folder = fso.GetFolder( dir_wp );
		var	files = folder.Files;
		var	i = new Enumerator( files );
		var	a = new Array();
		
		// ディレクトリ内のファイルをなめる。
		for (; !i.atEnd(); i.moveNext() )
		{
			var	path = i.item().Path;
			var	ext = fso.GetExtensionName( path );
			
			if( ext.toLowerCase() == "bmp" )
			{
				// 拡張子がbmpなら選択対象
				a.push( path );
			}
		}

		if( a.length > 0 )
		{
			// 画像が1つでもあれば乱数で選択
			var	index = Math.floor( Math.random() * (a.length) );
			var	path_wp = a[index];

			// レジストリに画像のパスを書き込む
			wsh.RegWrite( reg_key + "\\Wallpaper" , path_wp , "REG_SZ" );
			wsh.RegWrite( reg_key + "\\WallpaperStyle" , wp_style , "REG_SZ" );
		}
	}
	else
	{
		// no dir
	}

} catch( e ) {
	wsh.LogEvent( 1 , "(" + WScript.ScriptFullName + ":" + "," + e.name + "):" + e.message );
}


