PDA

View Full Version : سوال: کمک در ساخت نرم افزار یادآور روز تولد دوستان



سعید کشاورز
یک شنبه 15 بهمن 1391, 12:26 عصر
سلام دوستان...
امروز تصمیم گرفتم تا یه نرم افزار بنویسم برای "یادآور روز تولد"
البته نمونه های زیادی وجود داره اما من قصدم یادگیری هستش..
این چیزی که فعلا براش در نظر گرفتم خیلی سادس..
من فعلا می خوام که کاربر نرم افزار این اطلاعات رو وارد نرم افزار کنه:
نام و نام خانوادگی شخص به همراه تاریخ تولد(به صورت شمسی)
حالا واسه ابتدای کار یه سری سوال دارم:

1)زمانی که ویندوز بالا میاد برنامه باید به صورت خودکار اجرا بشه
2)می خوام برنامه از لیست Task Manager حذف بشه همچنین از قسمت System Tray
3)مثلا اگه تاریخ تولد طرف 1/1/1369 بود و امروز هم 1/1/1392 باشه اونوقت کاربر رو آگاه کنه.

فعلا اون چیزی که برام مهمه سوال 3 هستش که نمیدونم باید چجوری این رو پیاده سازی کنم؟ یعنی برنامه بیاد هر 24 ساعت چک کنه ببینه که آیا امروز روز تولد کسی هست یا نه..چه راه هایی واسه این کار وجود داره؟حتما باید از تایمر استفاده کنم واسه این کار یا روش دیگه ای وجود داره؟

ma.rad
یک شنبه 15 بهمن 1391, 12:44 عصر
1)زمانی که ویندوز بالا میاد برنامه باید به صورت خودکار اجرا بشه
2)می خوام برنامه از لیست Task Manager حذف بشه همچنین از قسمت System Tray
3)مثلا اگه تاریخ تولد طرف 1/1/1369 بود و امروز هم 1/1/1392 باشه اونوقت کاربر رو آگاه کنه.


برای اینکه زمان راه اندازی سیستم اجرا بشه باید تو startup ویندوز نصب بشه اینکه کاربر آگاه کنه فقط یه کوئری نیاز داره که ماه وروز تولد افراد را با ماه و روز تاریخ روز مقایسه کنه واون هایی که برابر هستن رو برگردونه

سعید کشاورز
یک شنبه 15 بهمن 1391, 12:47 عصر
برای اینکه زمان راه اندازی سیستم اجرا بشه باید تو startup ویندوز نصب بشه اینکه کاربر آگاه کنه فقط یه کوئری نیاز داره که ماه وروز تولد افراد را با ماه و روز تاریخ روز مقایسه کنه واون هایی که برابر هستن رو برگردونه

ممنون از پاسختون..
نوشتن کوئریش که کاری نداره...اما اینکه هز 24 ساعت این کوئری بخواد اجرا بشه مهمه..
ما میتونیم این کوئری رو توی تابع بنویسیم..حالا سوالم اینه که چجوری هر 24 ساعت این تابع بیاد اجرا بشه؟

ma.rad
یک شنبه 15 بهمن 1391, 12:51 عصر
به نظر من از یه تایمر استفاده بکن که هر 24 ساعت یکبار چک کنه ، می تونی یه شرط بزاری سر یه ساعت مشخصی این کا رو بکنه فکر نمی کنم برا اینکار به backgrund Worker نیاز باشه
و سوال دومی جا موند:
http://barnamenevis.org/showthread.php?102387-%D9%85%D8%AE%D9%81%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-Task-Manager

سعید کشاورز
یک شنبه 15 بهمن 1391, 13:11 عصر
به نظر من از یه تایمر استفاده بکن که هر 24 ساعت یکبار چک کنه ، می تونی یه شرط بزاری سر یه ساعت مشخصی این کا رو بکنه فکر نمی کنم برا اینکار به backgrund Worker نیاز باشه
و سوال دومی جا موند:
http://barnamenevis.org/showthread.php?102387-%D9%85%D8%AE%D9%81%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-Task-Manager

واسه مخفی کردن برنامه از لیست Application Task Manager یه راه ساده و باحال پیدا کردم..اونم اینکه بیام اسم فرم رو خالی بزارم..یعنی کد زیر

this.Text=""
اینم که شما میگین بیاد برنامه رو چک کنه با یه شرط فکر نکنم بشه.چون بالاخره باید این دستور شرطی مثلا هر 24 ساعت اجرا بشه دیگه..اگه توی دوره زمانی مشخص اجرا نشه که فقط هر سری که ویندوز بالا میاد شرط رو چک میکنه..
از Background Worker چیزی نمیدونم ..میخوام ببنیم بهترین و بهینه ترین روش واسه انجام این کار چیه؟

ma.rad
یک شنبه 15 بهمن 1391, 13:19 عصر
بله درسته پس بعد از راه اندازی سیستم هر موقع برنامه اجرا می شه بیاد و این مورد رو چک کنه و یه شرط هم بزارید که دستورات در هر تاریخ یکبار اجرا بشن
از Background Worker استفاده کنید بهتره
اینم یه نمونه:
99458

سعید کشاورز
یک شنبه 15 بهمن 1391, 13:36 عصر
بله درسته پس بعد از راه اندازی سیستم هر موقع برنامه اجرا می شه بیاد و این مورد رو چک کنه و یه شرط هم بزارید که دستورات در هر تاریخ یکبار اجرا بشن
از Background Worker استفاده کنید بهتره
اینم یه نمونه:
99458
مرسی از پاسختون..مبارک ستاره طلایی سوم:لبخند:
فقط یه سوال..چون با بک گراند ورکر آشنایی ندارم می خواستم بدونم که با BG Worker میشه یه دستور رو هر 24 ساعت یه بار اجرا کرد؟
شما فرض کنید کاربر ساعت 23:00 میاد سیستمش رو روشن می کنه اوکی؟ حالا برنامه چون برای اولین بار بالا اومده میاد کوئری مارو اجرا میکنه و اگه کسی تاریخ تولدش توی اون روز باشه به کاربر یادآوری می کنه..
خوب حالا فرض کنید ساعت میشه 00:00 و وارد روز جدید میشویم که تاریخ عوض میشه..حالا برنامه باید بیاد راس ساعت 00:00 چک کنه ببینه آیا توی تاریخ جدید تولد کسی هست یا نه..
حالا اینجا یه مشکل وجود داره..اونم اینکه اگه امروز 1/12/1391 باشه و تاریخ تولد شخص 2/12/1369 باشه..حالا کاربر ساعت 23 میاد سیستم رو روشن میکنه..مسلما برنامه یادآوری نمیکنه چون هنوز تاریخ 1/12/1391 هستش..وقتی ساعت بشه 00:00 یعنی الان توی روز تولد شخص هستیم درسته؟ اگه برنامه نیاد یادآوری کنه و کاربر نرم افزار تا 2 روز دیگه کامپیوتر خودش رو روشن نکنه اونوقت این یاد آوری از دستش میره و نمیتونه که تبریک بگه...
اینو چجوری حلش کنم؟ اگه جایی از حرفام مبهم بود بگین بیشتر توضیح بدم..

ma.rad
یک شنبه 15 بهمن 1391, 14:11 عصر
نکته ای که توجه نکردید اینکه اگر ساعت 23 سیستم روشن بشه چک می کنه می بینه تاریخ تولد نیست ولی ساعت 00:00 دوباره چک می کنه چون تاریخ تغییر کرده،bgw کارش همینه.
خب بالاخره اگر یه روز از روز تولد بگذره دیگه تبریک گفتن نداره ،سیستم مخابرات یه روز قبل از تولد تبریک می گه،البته تمام این بحث ها منوط به روشن کردن سیستم توسط کاربره
شما می تونید تمام یاداوری ها ی کاربر رو یه جا ذخیره کنید وبعد از ورود کاربر به سیستم بهش نمایش بدید(منوط به روشن کردن سیستم)

ma.rad
یک شنبه 15 بهمن 1391, 14:14 عصر
مبارک ستاره طلایی سوم:لبخند:

قابلی نداره
:چشمک:

sehm67
پنج شنبه 12 بهمن 1396, 12:24 عصر
مرسی از پاسختون..مبارک ستاره طلایی سوم:لبخند:
فقط یه سوال..چون با بک گراند ورکر آشنایی ندارم می خواستم بدونم که با BG Worker میشه یه دستور رو هر 24 ساعت یه بار اجرا کرد؟
شما فرض کنید کاربر ساعت 23:00 میاد سیستمش رو روشن می کنه اوکی؟ حالا برنامه چون برای اولین بار بالا اومده میاد کوئری مارو اجرا میکنه و اگه کسی تاریخ تولدش توی اون روز باشه به کاربر یادآوری می کنه..
خوب حالا فرض کنید ساعت میشه 00:00 و وارد روز جدید میشویم که تاریخ عوض میشه..حالا برنامه باید بیاد راس ساعت 00:00 چک کنه ببینه آیا توی تاریخ جدید تولد کسی هست یا نه..
حالا اینجا یه مشکل وجود داره..اونم اینکه اگه امروز 1/12/1391 باشه و تاریخ تولد شخص 2/12/1369 باشه..حالا کاربر ساعت 23 میاد سیستم رو روشن میکنه..مسلما برنامه یادآوری نمیکنه چون هنوز تاریخ 1/12/1391 هستش..وقتی ساعت بشه 00:00 یعنی الان توی روز تولد شخص هستیم درسته؟ اگه برنامه نیاد یادآوری کنه و کاربر نرم افزار تا 2 روز دیگه کامپیوتر خودش رو روشن نکنه اونوقت این یاد آوری از دستش میره و نمیتونه که تبریک بگه...
اینو چجوری حلش کنم؟ اگه جایی از حرفام مبهم بود بگین بیشتر توضیح بدم..

آقای کشاورز سلام

خواستم بپرسم بالاخره نتیجه این سوالتون چی شد. از چه روشی استفاده کردین؟؟؟؟؟

nunegandom
جمعه 13 بهمن 1396, 15:32 عصر
جناب کشاورز اگر دوست داشتید پروژه رو توی GitHub بگذارید مشارکت کنیم:خجالت:

/// الان تاریخ رو دیدم :لبخند: