Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2008, 22:22   #1
Rahim1993
Пользователь
 
Аватар для Rahim1993
 
Регистрация: 27.12.2007
Сообщений: 67
По умолчанию Фон рабочего стола.

Доброе вам время суток. Подскажите пожалуйста, как сменить фон рабочего стола? Новая папка (2).rar
S.R.H.(Rahim)
Rahim1993 вне форума Ответить с цитированием
Старый 16.02.2008, 23:24   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

procedure TForm1.Button1Click(Sender: TObject);
begin
SystemParametersInfo(SPI_SETDESKWAL LPAPER, 0, PChar('C:\Picture.bmp'),
SPIF_UpdateIniFile);
end;

Только ставь картинки с расширением .bmp!
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 16.02.2008, 23:35   #3
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Чтобы изменить обои на рабочем столе необходимо сделать изменения в файле настроек win.ini, записав туда путь к нужной bmp-картинке. Реализовать это можно при помощи объекта типа treginifile, чтобы можно было его использовать, надо в uses добавить модули registry и winprocs. Допустим картинка на рабочем столе будет меняться по клику на кнопку. Тогда в обработчике события onclick напишите:

procedure tform1.button1click(sender: tobject);
var
reg : treginifile;
swallpaperbmppath:string;
btile:boolean;
begin
// Изменяем ключи реестра
// hkey_current_user
// control panel\desktop
// tilewallpaper (reg_sz)
// wallpaper (reg_sz)
reg := treginifile.create('control panel\desktop' );
with reg do begin

//путь к картинке, я думаю вам какой-нибудь другой захочется
swallpaperbmppath:='С:\borland\delp hi 3\images\backgrnd\writing.bmp';
//По центру рабочего стола
btile:=false;

writestring( '', 'wallpaper', swallpaperbmppath );
if( btile )then begin
writestring('', 'tilewallpaper', '1' );
end
else begin
writestring('', 'tilewallpaper', '0' );
end;
end;
reg.free;
// Оповещаем всех о том, что мы
// изменили системные настройки
systemparametersinfo(spi_setdeskwal lpaper, 0, nil, spif_sendwininichange );
end;
Gauss вне форума Ответить с цитированием
Старый 17.02.2008, 00:07   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вот и продолжение статьи:
Цитата:
Но надо помнить что этот код будет действовать только при отключенном activedesctop. Если же он у Вас включен или Вы хотите установить на Рабочий Стол картинку в формате .jpg или .gif, то Вам потребуется использовать код, приведенный ниже

uses
comobj, shlobj;

procedure changeactivewallpaper;
const
clsid_activedesktop: tguid = '{75048700-ef1f-11d0-9888-006097deacf9}';

var
activedesktop: iactivedesktop;

begin
activedesktop := createcomobject(clsid_activedesktop ) as iactivedesktop; activedesktop.setwallpaper('c:windo wsforest.jpg',0);
activedesktop.applychanges(ad_apply _all or ad_apply_force);
end;

Ну вот вроде бы и все, используйте на здоровье!..

(С) Автор статьи: Михаил Христосенко

Последний раз редактировалось mihali4; 17.02.2008 в 13:05.
mihali4 вне форума Ответить с цитированием
Старый 17.02.2008, 09:18   #5
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

А у меня 1-й метод заработал только после доработки.
Код:
Const
Walp='C:\123.bmp';
...
reg := treginifile.create('S-1-5-21-343818398-287218729-725345543-1003\Control Panel\Desktop' );
reg.RootKey:=HKEY_USERS;
with reg do begin

btile:=false;

writestring( '', 'wallpaper', Walp );
reg.free;
А 2-й только после введения константы Walp.

- Это, что? -разновидность ОС или версий Delphi? (у меня 7-я)

P.S. Не обязательно что у всех этот ключ одинаков (S-1-5-21-343818398-287218729-725345543-1003)
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 17.02.2008, 12:20   #6
Rahim1993
Пользователь
 
Аватар для Rahim1993
 
Регистрация: 27.12.2007
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
Только ставь картинки с расширением .bmp!
Terran, мне нужно расширение .jpeg, .jpg. и т.д. Если это возможно.
S.R.H.(Rahim)
Rahim1993 вне форума Ответить с цитированием
Старый 17.02.2008, 12:33   #7
Rahim1993
Пользователь
 
Аватар для Rahim1993
 
Регистрация: 27.12.2007
Сообщений: 67
По умолчанию

Вот код.(С этого сайта).


Uses ShlObj, ComObj;

procedure ChangeWallpaper;
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
ActiveDesktop: IActiveDesktop;
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop )
as IActiveDesktop;
ActiveDesktop.SetWallpaper('Путь к файлу', 0);
ActiveDesktop.ApplyChanges(AD_APPLY _ALL or AD_APPLY_FORCE);
end;

Затем в нажатии на кнопку пишем:

procedure TForm1.ButtonClick(Sender: TObject);
begin
ChangeWallpaper;
end;




В место "Путь к файлу" можно как нибудь поставить фотку из Image1?
S.R.H.(Rahim)
Rahim1993 вне форума Ответить с цитированием
Старый 17.02.2008, 13:59   #8
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

SystemParametersInfo(SPI_SetDeskWal lPaper, 0, PChar('D:\1.bmp'),SPIF_UpdateiniFil e);
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 17.02.2008, 15:34   #9
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Цитата:
Сообщение от Rahim1993 Посмотреть сообщение
Terran, мне нужно расширение .jpeg, .jpg. и т.д. Если это возможно.
Код конвертирования
Код:
Uses JPEG;

Function ConverterJPEGToBMP(JpgImage:TJpegImage):Tbitmap;
begin
Result:=TBitmap.Create;
Result.Width := JpgImage.Width;
Result.Height := JpgImage.Height;
Result.Canvas.Draw(0, 0, JpgImage);
end;
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 17.02.2008, 16:59   #10
Rahim1993
Пользователь
 
Аватар для Rahim1993
 
Регистрация: 27.12.2007
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Air Посмотреть сообщение
Код конвертирования
Код:
Uses JPEG;

Function ConverterJPEGToBMP(JpgImage:TJpegImage):Tbitmap;
begin
Result:=TBitmap.Create;
Result.Width := JpgImage.Width;
Result.Height := JpgImage.Height;
Result.Canvas.Draw(0, 0, JpgImage);
end;



Это конвертирование BMP в Jpeg?
S.R.H.(Rahim)
Rahim1993 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разрешение рабочего стола. SanekIrk Общие вопросы Delphi 2 10.07.2008 18:01
Узнать размер рабочего стола Dj_smart Общие вопросы Delphi 3 26.03.2008 18:39
Как изменить размер рабочего стола? Legat Win Api 5 26.10.2007 17:17
скриншоты рабочего стола Alar Общие вопросы Delphi 0 29.10.2006 10:59