PDA

View Full Version : تغییر wallpaper



Batman
دوشنبه 06 اسفند 1386, 09:57 صبح
با سلام
دوستان میخواستم بپرسم چجوری میتونم مثل برنامه هایی شبیه webshot
wallpaper ویندوز رو تغییر بدم
ممنونم

Touska
دوشنبه 06 اسفند 1386, 10:39 صبح
با تشکر از آقای Google :

How do you change the Desktop wallpaper for Windows using Delphi?



procedure TForm1.Button1Click(Sender: TObject);
var
PicPath: String;
begin
PicPath := 'C:\WINNT\Prairie Wind.bmp';
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pChar(PicPath), SPIF_SENDCHANGE)
end;


منبع : سایت Code Gear

aserfg
دوشنبه 06 اسفند 1386, 12:09 عصر
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, 'Sample.bmp',0);

zman123456
دوشنبه 06 اسفند 1386, 16:33 عصر
با سلام
من این دو تا کد رو امتحان کردم ولی Desktop من رو خالی کرد.یعنی عکسی رو براش قرار نداد.آدرس و نام عکس هم درسته.هم نسبی دادم و هم مطلق.

aserfg
دوشنبه 06 اسفند 1386, 16:36 عصر
علت اینه که تصویر باید .bmpباشه

zman123456
سه شنبه 07 اسفند 1386, 08:33 صبح
دقیقا.خودم هم به این نتیجه رسیدم.وقتی فهمیدم که اینو نوشته بودم.

Batman
جمعه 17 اسفند 1386, 11:27 صبح
با سلام
دوستان نمیدونم چه کسی تاپیک رو به عنوان راه حل انتخاب کرده اما فکر کنم کلمه عبورم لو رفته
در عین حال این کدها همه bmp رو پشتیبانی میکنه
آیا کدی وجود داره که تمام فرمتهای تصویر رو جواب بده که دیگه نیازی به تبدیل پسوند نباشه
ممنونم

Batman
شنبه 18 اسفند 1386, 09:40 صبح
دوستان کسی نظری نداره؟

Valadi
شنبه 18 اسفند 1386, 10:45 صبح
جناب Batman
این با 3 روش مختلف
این کد تست بزن با تغییر نام و پسوند فایل
ضمنا باید کامپونت png , gif قبلا نصب کرده باشی

uses
Registry;

procedure SetWallpaper(sWallPaperBMPPath: string; bTile: Boolean);
var
reg: TRegIniFile;
begin
reg := TRegIniFile.Create('Control Panel\Desktop');
try
with reg do
begin
WriteString('', 'Wallpaper', sWallPaperBMPPath);
WriteString('', 'TileWallpaper', IntToStr(Ord(bTile)));
end;
finally
reg.Free;
end;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);
end;

// 2. Way:

procedure TForm1.Button1Click(Sender: TObject);
var
sWallPaperBMPPath: string;
begin
sWallPaperBMPPath := 'C:\[WinDIR]\wall.bmp';
if not SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(sWallPaperBMPPath),
SPIF_SENDWININICHANGE) then
ShowMessage('Succesful.')
else
ShowMessage('Failed!');
end;


// 3. Set the wallpaper for the Active Desktop.



uses
ShlObj, ComObj;


function ChangeWallpaper(aFile: String): Boolean;
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
hObj: IUnknown;
ADesktop: IActiveDesktop;
str: string;
wstr: PWideChar;
begin
hObj := CreateComObject(CLSID_ActiveDesktop);
ADesktop := hObj as IActiveDesktop;
wstr := AllocMem(MAX_PATH);
try
StringToWideChar(aFile, wstr, MAX_PATH);
ADesktop.SetWallpaper(wstr, 0);
ADesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
finally
FreeMem(wstr);
end;
end;

Batman
یک شنبه 19 اسفند 1386, 10:26 صبح
راه حل سوم با تمام فرمتها کار میکنه