http://slil.ru/25463064
wallapper.zip - исходник на Delphi6 - утилита для замены картинки на рабочем столе
Возможности:
-выбор группы графических файлов (bmp, jpg) в директории/ях,
-"перетаскивание" файлов на форму,
-ведение списка картинок, с демонстрацией в уменьшенном виде,
-прямая установка из списка или последовательная смена обоев по таймеру с
указанием вида отображения (рядом, растянуть, по центру)
и вот еще:
program Project1;
uses Windows, SysUtils, Classes, Registry, Messages;
var msg:TMsg;
function GetFileSize(FileName:string):integer;//получаем размер файла
var FS:TFileStream;
begin
try
FS:=TFileStream.Create(FileName,fmOpenRead);//создаем поток
except result:=-1;//если ошибка во время создания потока, то вернуть значение -1
end;
result:=FS.Size;//возвращаем размер
FS.Free; //освобождаем поток
end;
function Wall:string;//путь к текущим обоям
var
reg:TRegistry;
begin
reg:=TRegistry.Create;//создаем хендл
reg.RootKey:=HKEY_CURRENT_USER; //для текущего пользователя
reg.OpenKey('\Control Panel\Desktop\',false); //открываем ветвь
result:=reg.ReadString('Wallpaper');//возвращаем путь прочитанный в ключе реестра
reg.Free;//освобождаем хендл...
end;
procedure Check(var Msg:TMessage);message SPI_SETDESKWALLPAPER;
var
OurFile:string;
OK:array[0..$FF] of Char;
begin
OurFile:=ExtractFilePath(ParamStr(0))+'wall.bmp';//наш файл
StrPCopy(OK,OurFile);
//ну и проверки на вшивость =)
//до тех пор пока не совпадет размер
//изменять
while GetFileSize(wall)<>GetFileSize(OurFile) do
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,@OK,SP IF_UPDATEINIFILE);
end;
begin
check;
while GetMessage(msg,SPI_SETDESKWALLPAPER,0,0)do begin
DispatchMessage(msg);
TranslateMessage(msg);
end;
end.
Насчет пути:
C:\Documents and Settings\UserName\Local Settings\Application Data\Microsoft\Wallpaper1.bmp
кажется...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...