Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

Как изменить фоновую картинку на рабочем столе.   Найти похожие ветки 

 
Yandexman   (2005-06-01 12:53) [0]

Тема была незаслуженно закрыта, поэтому извиняюсь за открытие новой.
вот код программы, совместил 3 и 8, но от этого картинка не менятся!
procedure SetWallpaper(sWallpaperBMPPath: string; bTile: boolean);
var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 with reg do
 begin
   RootKey:=HKEY_CURRENT_USER;
   OpenKey("Control Panel\Desktop",True);
   WriteString("Wallpaper",sWallpaperBMPPath);
 end;
 reg.Free;
SystemParametersInfo(spi_SetDeskWallpaper, 0, PChar(sWallpaperBMPPath) , spif_UpdateIniFile);
end;


 
Eraser ©   (2005-06-01 15:07) [1]

Yandexman   (01.06.05 12:53)

Что возвращает ф-я SystemParametersInfo?


 
rOOse ©   (2005-06-01 16:28) [2]

procedure tform1.SetWallpaper(sWallpaperBMPPath:String;bTile:boolean);
var
   reg : TRegIniFile;
begin
 reg := TRegIniFile.Create("Control Panel\Desktop" );
 with reg do
   begin
     WriteString( "", "Wallpaper", sWallpaperBMPPath );
     if( bTile )then
       begin
         WriteString("", "TileWallpaper", "1" );
       end
         else
       begin
         WriteString("", "TileWallpaper", "0" );
       end;
  end;
reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, il,SPIF_SENDWININICHANGE );
end;
вот работает


 
rOOse ©   (2005-06-01 16:33) [3]

Удалено модератором


 
rOOse ©   (2005-06-01 16:34) [4]

Удалено модератором


 
rOOse ©   (2005-06-01 16:36) [5]

Удалено модератором


 
rOOse ©   (2005-06-01 16:39) [6]

Удалено модератором


 
vaxluk   (2005-06-01 18:32) [7]

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;


 
vaxluk   (2005-06-01 18:48) [8]

не забудь добавить
uses
ComObj,  ShlObj;


 
rOOse ©   (2005-06-01 18:52) [9]


> [8] vaxluk   (01.06.05 18:48)

упс забыл;)


 
Yandexman   (2005-06-01 19:04) [10]

Люди, вы сами то хоть пробовали то что советуете?
Я же сказал вам что перепробовал все предложенные варианты в ДельфиВорлд, все 6 вариантов и ни один не работает!
А в варианте vaxluk   я не знаю как String привести к PWideChar&


 
Eraser ©   (2005-06-01 19:09) [11]

Yandexman   (01.06.05 19:04) [10]


var
 CurFile: string;
 PCur: PChar;
...
 pcur:=pchar(curfile);
 SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pcur,SPIF_SENDCHANGE);


не может не работать, т.к. работает.


 
vaxluk   (2005-06-01 20:14) [12]

тебе ничего не нужно переводить! Напиши просто путь к нужному файлу, и все прекрасно работает!


 
Antonn ©   (2005-06-02 06:25) [13]


> Тема была незаслуженно закрыта

абсолютно заслуженно, оффтоп пошел...


 
Yandexman   (2005-06-02 07:40) [14]


> не может не работать, т.к. работает.

Попробуй сам что пишеш, а потом утверждай


> абсолютно заслуженно, оффтоп пошел

Люди советуют, и так уверены в том что работает,что даже начинают доказывать это, хотя сами не пробовали.
Мне нужна система нажал кнопку, и мгновенно сменилась картинка, фишки с реестром и SystemParametersInfo в WIndows XP НЕ РАБОТАЮТ! Про другие OC не знаю может для Win9X и годится это.


 
Antonn ©   (2005-06-02 07:44) [15]

Yandexman   (02.06.05 7:40) [14]
не буду ругаться, но ты пробывал это?

procedure SetWallpaper(Value: string);
begin
   SystemParametersInfo(spi_SetDeskWallpaper, 0, PChar(Value) , spif_UpdateIniFile);
end;

после вызова этой процедурки, у меня на рабочем столе картинка меняется сразу, и при перезагрузке остается.


 
Yandexman   (2005-06-02 09:58) [16]


> не буду ругаться, но ты пробывал это?

Только что попробовал на WinXP SP1 и WinXP SP2, картинка менятся только при перезагрузке.
Может быть подскажете в чем может быть трабла?
У всех работает а у меня нет!


 
Antonn ©   (2005-06-02 10:18) [17]

Yandexman   (02.06.05 9:58) [16]
конвертни в bmp


 
Yandexman   (2005-06-02 11:32) [18]

Как енто?
А как GIF и GPEG?


 
Eraser ©   (2005-06-02 14:39) [19]

Yandexman   (02.06.05 07:40) [14]

Это из рабочей программы.


 
Yandexman   (2005-06-02 20:18) [20]


> конвертни в bmp

Нифига, таже лажа.


 
Eraser ©   (2005-06-02 20:46) [21]

Yandexman   (02.06.05 20:18) [20]

Ну значит несудьба...


 
Yandexman   (2005-06-03 06:35) [22]


> Ну значит несудьба...

Помошнички, все тут гении собрались, а заменить заставку на рабочем столе не могут :-[


 
Antonn ©   (2005-06-03 07:02) [23]


> Помошнички, все тут гении собрались, а заменить
> заставку на рабочем столе не могут :-[

речь шла не о заставке.


 
Yandexman   (2005-06-08 13:40) [24]


> речь шла не о заставке.

О фоне конечно, очепятался :()


 
Zeqfreed ©   (2005-06-08 15:00) [25]

unit setwall;

interface

uses
Windows, SysUtils, Registry, JPEG, Graphics;

function SetWallpaper(filename : String) : boolean;

implementation

function Jpg2Bmp(const filename : String) : String;
var
jpg : TJPEGImage;
bmp : TBitmap;
windir : String;
buff : array[0..MAX_PATH - 1] of Char;
begin
Result := "";

jpg := TJPEGImage.Create;
try
 jpg.CompressionQuality := 100;
 jpg.LoadFromFile(filename);
 bmp := TBitmap.Create;
 try
  bmp.Assign(jpg);

  GetWindowsDirectory(buff, MAX_PATH);
  windir := buff;
  Result := windir + "\" + ChangeFileExt(ExtractFileName(filename), ".bmp");

  bmp.SaveToFile(Result);
 finally
  bmp.Free;
 end;  
finally
 jpg.Free;
end;
end;

function SetWallpaper(filename : String) : boolean;
var
r : TRegistry;
ext : String;
begin
Result := false;
ext := AnsiUpperCase(ExtractFileExt(filename));

if ext = ".JPG" then
 filename := jpg2bmp(filename)
else if ext <> ".BMP" then Exit;

r := TRegistry.Create;
try
 try
  r.RootKey := HKEY_CURRENT_USER;
  r.OpenKey("Control Panel\Desktop", false);
  r.WriteString("Wallpaper", filename);
  r.CloseKey;

  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(filename), SPIF_SENDCHANGE);

  Result := true;
 except
  MessageBeep(MB_ICONHAND);
  MessageBox(0, "Error while accessing registry", "SetWallpaper", MB_OK + MB_ICONWARNING);
 end;
finally
 r.Free;
end;
end;

end.


&#239;&#240;&#238;&#226;&#229;&#237;&#238; &#237;&#224; WinXP Pro SP 2
&#207;&#240;&#232;&#236;&#229;&#240; &#232;&#241;&#239;&#238;&#235;&#252;&#231;&#238;&#226;&#224;&#237;&#232;&#255;:
SetWallpaper("C:\Images\wallpaper.jpg");


 
Zeqfreed ©   (2005-06-08 15:02) [26]

Преверено  на WinXP Pro SP 2
Пример использования:


Блин, почему-то у меня из клиента Piter"ского не отправляются посты, а при копировании забыл сменить раскладку :)


 
Yandexman   (2005-06-08 17:08) [27]

А как же с GIF? ведь XP держит анимированные картинки!


 
Zeqfreed ©   (2005-06-08 17:14) [28]

Yandexman   (08.06.05 17:08) [27]
Придется разбивать на кадры (с помощью какого-нибудь компонента, возможно, из RxLib) и по таймеру менять!


 
Yandexman   (2005-06-23 06:47) [29]


> Придется разбивать на кадры (с помощью какого-нибудь компонента,
> возможно, из RxLib) и по таймеру менять!

Так и геморой заработать можно!Ведь мало разбить еще и конвертить в битмап нужно.



Страницы: 1 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
14-1122294625
хм
2005-07-25 16:30
2005.08.14
как бы route настроить


6-1115288796
Pavelkq
2005-05-05 14:26
2005.08.14
Приоритет IdFTP


3-1120477465
Митяй
2005-07-04 15:44
2005.08.14
Сохранение результата запроса в таблицу


9-1114313103
Nad89
2005-04-24 07:25
2005.08.14
GLUT в Delphi


1-1122033301
saasik
2005-07-22 15:55
2005.08.14
Использование PivotTable - Access Violation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский