PDA

View Full Version : تعویض عکس زمینه پس از یک مدت زمان خاص



farzadkamali
سه شنبه 04 مهر 1391, 10:24 صبح
با سلام خدمت دوستان

آیا امکان تغییر زمینه دسکتاپ پس از یه مدت زمان خاص وجود داره؟
به این صورت که 100 تا عکس یا بیشتر توی یک پوشه کنار برنامه قرار بگیره و هر 1 دقیقه یه بار عکس زمینه تعویض بشه.

این کد عکس زمینه رو تغییر میده. ولی فقط یه عکس رو. اونم باید آدرس دقیق عکس رو توی کد ها بنویسی.


var
PicPath: String;
begin
PicPath := 'C:\1.jpg';
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pChar(PicPath), SPIF_SENDCHANGE)
end;


دوستان اگه راهنمایی کنن ممنون میشم.

MohsenB
سه شنبه 04 مهر 1391, 12:14 عصر
سلام

خوب الان چه مشکلی دارید؟ کد تعویض رو که دارید. چی رو نمی دونید؟
تو یه حالت ساده : یه تایمر به همراه یه فایل لیست باکس رو فرمتون قرار بدید و آدرس اون رو روی پوشه عکسها تنظیم کنید بعد از اون با هر بار رویداد تایمر یکی از عکسها رو با کدتون نمایش بدید . فقط باید برنامتون همیشه در هال اجرا باشه .


موفق باشید

BORHAN TEC
سه شنبه 04 مهر 1391, 12:16 عصر
مهمترین کاری که باید انجام بدین اینه که لیست فایلها رو بدست بیارید و برای این کار باید فایلها رو جستجو کنید. توجه داشته باشید که کدهای مربوط به این کار بارها در همین سایت قرار داده شده است (فکر می کنم خودم تا به حال بیش از 10 بار در همین سایت کدهای مربوط به این کار را قرار داده ام :گیج:)که می توانید آنرا پیدا کرده و از آن استفاده کنید.

farzadkamali
سه شنبه 04 مهر 1391, 13:32 عصر
با تشکر از پاسخ دوستان.

یه کد دارم که نام تمامی فایل های درون یک پوشه رو توی یک لیست باکس نشون میده.

تابع:

procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;

کد پشت دکمه: ListFileDir('I:\Sh & Pictiure\Pictiure\HD\Girls\', ListBox1.Items);
که با کلیک تمام فایل های پوشه ای رو که واقع در آدرس هست در لیست باکس1 نشون میده.
حالا آدرس عکس ها میشه آدرس پوشه اصلی+اولین مقدار لیست باکس1. (چون تو لیست باکس فقط نام شون رو نشون میده نه آدرس کامل) حالا کافیه مقدار اول لیست باکس رو به آخر لیست باکس انتقال بدیم.

تا اینجا مشکلی نیست و می تونم تمام عکس ها رو در والپیپر قرار بدم
ولی
فقط مشکل اون شمارنده است که نمی دونم. یعنی احتمالا باید یه counter از نوع اینتجر تعریف کنیم. و یه تایمر بزارم. ولی حالا اینکه چیکارش کنیم و چی رو توش بریزیم یا با تایمره چیکار کنم رو نمیدونم. که این دستورات رو هر 1 دقیقه تکرار کنه و یه عکس جدید رو پس زمینه قرار بده.

یه مشکل دیگه هم هست: عکس ها رو تنظیم نمی کنه نسبت به صفحه. مثلاً(stretch,fill,fit,center که توی تعویض عکس زمینه ویندوز میشه تنظیم کرد) و اکثراً رو خیلی بزرگ نشون میده. آیا کدی هست که عکس رو تمام صفحه نشون بده. نه بزرگتر و نه کوچکتر.