Имеется следующий скрипт, который запускается в конце установки Windows и устанавливает случайную картинку в качестве обоев (если кому надо, пользуйтесь, только распакуйте вложение в папку со скриптом):
Код:
var SourceDir, FileTypes, ft, FileList,n1,counter,GlSeed;
// скрипт для выбора случайной картинки и установки ее в качестве обоев
// (c) MarsDen 2005
// параметры задаются ниже
// SourceDir = "C:\Bitmaps" - папка, в которой лежат картинки
SourceDir = "c:\\Documents and Settings\\Администратор\\Мои документы\\Мои рисунки\\";
// FileTypes = список типов файлов, через точку, в верхнем регистре,
// только тогда гарантируется полный перебор всех файлов
FileTypes = 'BMP.JPG';
// в результате выполнения скрипта формируется файл-копия в папке %SystemRoot%
// с имененм JS_WallPaper.ext, где ext - текущее расширение файла
// и вносятся записи в реестр с указанием новых обоев
function ReadFoldersCount(SD){
var fso, f, fc, fc1, s, s1, cnt;
cnt=0;
fso = new ActiveXObject("Scripting.FileSystemObject");
//WScript.Echo(SourceDir);
f = fso.GetFolder(SD);
fc = new Enumerator(f.SubFolders);
fc1 = f.SubFolders;
s = "";
for (; !fc.atEnd(); fc.moveNext())
{
s += fc.item();
s += "\n";
s1 = fc.item();
cnt += ReadFoldersCount(s1);
}
cnt += fc1.Count;
return cnt;
}
function ReadFilesCount(SD){
var fso, f, fc, fc1, s, s1, s2, cnt, nn,nn1;
if(!SD){return 0}
cnt=0;
fso = new ActiveXObject("Scripting.FileSystemObject");
//WScript.Echo(SD);
f = fso.GetFolder(SD);
fc = new Enumerator(f.SubFolders);
fc1 = f.SubFolders;
s = "";
for (; !fc.atEnd(); fc.moveNext())
{
s += fc.item();
s += "\n";
s1 = fc.item();
cnt += ReadFilesCount(s1);
}
fc = new Enumerator(f.files);
fc1 = f.files;
for (; !fc.atEnd(); fc.moveNext())
{
s = fc.item();
s = SD+"\\"+s.name;
s1=s.toUpperCase();
for(nn=0;nn<ft.length;nn++){
s2 = ft[nn];
if(!(s2=='')){
if(s1.lastIndexOf(s2)==s1.length-s2.length){
FileList[FileList.length] = s;
}
}
}
//cnt += ReadFilesCount(s1);
}
cnt += fc1.Count;
return cnt;
}
ft = FileTypes.split('.');
FileList = new Array();
ReadFilesCount(SourceDir);
var nn = parseInt((FileList.length * Math.random()) + 1);
var s = FileList[nn];
nn = s.lastIndexOf('.');
var s1 = s.substring(nn+1,s.length)
//WScript.Echo(s+" nn = "+nn+" s1 = "+s1);
var WSHShell = WScript.CreateObject("WScript.Shell");
var WinDir = WSHShell.ExpandEnvironmentStrings("%SystemRoot%");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s2=WinDir+"\\JS_Wallpaper."+s1;
var s3=WinDir+"\\JS_Wallpaper.bmp";
fso.CopyFile(s, s2);
if(s2.toUpperCase()!=s3.toUpperCase()){
var s4 = 'jpgtobmp.exe "'+s2+'" "'+s3+'"';
WSHShell.Run(s4)
}
var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.RegWrite("HKCU\\Control Panel\\Desktop\\TileWallpaper", "0");
WSHShell.RegWrite("HKCU\\Control Panel\\Desktop\\Wallpaper", s3);
WSHShell.RegWrite("HKCU\\Control Panel\\Desktop\\WallpaperStyle", "2");
Вопрос к гуру: как его изменить, чтобы вместо прямых путей можно было бы подставить переменные окружения?