![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Смена картинки на рабочем столе. [D7, Win2k]
quickblack © (2004-10-12 22:30:00)У меня возникла такая проблема. Мне необходимо, чтобы программа меняла картинку на рабочем столе. В реестре HKEY_CURRENT_USER\Control Panel\Desktop я добавляю в параметр Wallpaper путь к моему изображению.
Но эта картинка становится на рабочий стол только после перезагрузки компьютера. А мне нужно, чтобы картинка менялась на рабочем столе при запуске программы.
Может есть другой способ смены изображения на рабочем столе?
Kolan (2004-10-12 23:34:00) [1]Посмотри по форуму недавно функции для работы с desktop скидывал.
А ладно вот еще раз
procedure TForm1.ChangeWallpaper(Path:PwideChar);
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
ActiveDesktop: IActiveDesktop;
begin
if path <> '' then
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)as IActiveDesktop;
ActiveDesktop.SetWallpaper(path, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end
else exit;
end;
function TForm1.StringToPWide( sStr: string; var iNewSize: integer ): PWideChar;
var
pw : PWideChar;
iSize : integer;
begin
iSize := Length( sStr ) + 1;
iNewSize := iSize * 2;
pw := AllocMem( iNewSize );
MultiByteToWideChar( CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize );
Result := pw;
end;
Вызов
ChangeWallpaper(StringToPWide(current_dir+only_file_name,iSize));
Скидываю тк сам с этим долго мучался
quickblack (2004-10-12 23:00:00) [2]>Gero© Спасибо.
Gero (2004-10-12 22:53:00) [3]SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);