PDA

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



ahrimaneahurai
سه شنبه 23 آذر 1389, 12:18 عصر
سلام
دوستان من یه برنامه می خوام بنویسم که با تغییر تاریخ یه سری کار انجام بده
اما یه مشکلی هست که خیلی ها تاریخ ویندوزشون به دلیل کرک یا بی توجهی صحیح نیست(خودمم تاریخم صحیح نیست)
حالا 2 تا راه حل من دارم
1- یه تایمر بذارم که مثلا هر 1 ساعت یه بار تاریخ رو چک کنه که مثلا اگه از 24 ساعت گذشته بره روز بعد
2- یا اینکه تاریخ ویندوز رو تصحیح کنم

مشکل راه حل اول اینه که برای فهمیدن روز بعد دردسر های زیادی داره (خاموش شدن دستگاه و محاسبه اینکه دستگاه چند ساعت خاموش بوده و ...)
مشکل راه حل دوم هم اینه که اگه بشه (نمی دونم میشه یا نه که فکر کنم بشه) خیلی ها ویندوزشون و شاید سایر برنامه هاشون که بر اساس تاریخ کرک شده از بین بره.
حالا از نظر شما من کدوم راه رو انتخاب کنم ؟
راه حل دیگه ای هم هست ؟
اینم بگم که من باید بر اساس تاریخ هجری کار کنم نه شمسی. مدت برنامم که کار میکنه حداکثر 3 ماه هست.
ممنون از شما دوستای عزیز که وقتتون رو صرف می کنید.

massar
سه شنبه 23 آذر 1389, 14:13 عصر
مشکل دقیقتون چیه؟ اینطوری که صحبت میکنید ظاهرا برا Evaluation Period میخوایدش.
اگه فقط بازه زمانی 3 ماهه مد نظرتونه، هجری و شمسی فرقی نمیکنه روز 24 ساعته و ماهم 30 روزه بطور متوسط و مشکلتون هم با پراپرتی Days کلاس TimeSpan رفع میشه، میتونید هم از وب سرویس هایی که زمان رو بر میگردونن استفاده کنید که در اون صورت نیاز به دسترسی به اینترنت دارید. میتونید آخرین زمان و تاریخ اجرا یا خارج شدن برنامه رو توی رجیستری بنویسید و هر بار که برنامه ران میشه اونو بخونین و یه تایمر کارتونو را میندازه، همش بستگی به این داره که چکار میخواید بکنید.

ahrimaneahurai
سه شنبه 23 آذر 1389, 14:45 عصر
کار برای یه تقویمی هست که برای یه بازه 3 ماهه می خواد نوشته شه
برام زیاد فرقی نداره یکی 2 ساعت زمان غقب جلو باشه اما تاریخ خیلی مهمه.
پس به نظر شما بهتره اولین بار برای نصب وصل بشه به یه وب سرویس تاریخ اصلی رو بگیره و در برنامه ذخیره کنه و دیگه از طریق days تاریخ رو محاسبه کنه که روز بعد هست یا نه.
اما اگه طرف اینترنت نداشت چی ؟
(کسایی که براشون می نویسم آدمایی هستن که خیلی به این مسایل گیر میدن. )
برای حل مسیله اینترنت نظرتون چیه ؟
چون معلوم نیست چه تاریخی داره نصب میکنه و تاریخ سیستمش چی هست
ممنون که وقت گذاشتید

csharpprogramer88
سه شنبه 23 آذر 1389, 21:54 عصر
این چیزی که میگم زیاد روش فکر نکردم ولی شاید مفید باشه
چون میخوای دستی اولین تاریخ را به سیستم بدی و با توجه به این


کار برای یه تقویمی هست که برای یه بازه 3 ماهه می خواد نوشته شه

تاریخ امروز سیستم را بگیرید و مبنای تغییر تاریخ هم ساعت 24 باشه و این روند را تا 90 روز انجام بدید

ahrimaneahurai
چهارشنبه 24 آذر 1389, 01:47 صبح
ممنون اما من می خوام مثلا تاریخ 89.11.21 فلان متن نمایش داده شه اما نمی دونم تو چه تاریخی برنامه رو سیستم نصب شده اولین روز رو بگیرم.
فکر کنم بهترین راه همون باشه که بار اول به اینترنت وصل شه و تاریخ روز رو بگیره و برمبنای 24 ساعت تاریخ رو عوض کنه
اما بازم مشکل اینترنت هست که اگه طرف اینترنت نداشت چی؟

csharpprogramer88
پنج شنبه 25 آذر 1389, 10:09 صبح
ممنون اما من می خوام مثلا تاریخ 89.11.21 فلان متن نمایش داده شه اما نمی دونم تو چه تاریخی برنامه رو سیستم نصب شده اولین روز رو بگیرم.
فکر کنم بهترین راه همون باشه که بار اول به اینترنت وصل شه و تاریخ روز رو بگیره و برمبنای 24 ساعت تاریخ رو عوض کنه
اما بازم مشکل اینترنت هست که اگه طرف اینترنت نداشت چی؟
سلام
ایام تسلیت باد
اگر منظورتان ابین باشه که باید از تاریخ شمسی استفاده کنی میتونی تاریخ امروز را تبدیل به شمسی بکنی
اگر میخواید بگید 10 روز بعد از اولین تاریخ، فلان متن نشان داده بشه احتمالا پیشنهادم جواب بده ولی اگر الزاما بخواهید در تاریخ 89.11.21 متنی نمایش داده بشه ممکنه تاریخ سیستم هیچ وقت با این تاریخ تطبیق پیدا نکنه پس روش خودتان بهتره

ahrimaneahurai
پنج شنبه 25 آذر 1389, 11:02 صبح
بگید 10 روز بعد از اولین تاریخ، فلان متن نشان داده بشه
راه حل بسیار خوبیه. فقط باید تاریخ روز رو از اینترنت بگیره
دیگه مجبورم بگم یه بار وصل شده الزامیه وگرنه امکان داره برنامه درست کار نکنه
ممنون دوستان

alirat
پنج شنبه 25 آذر 1389, 14:41 عصر
به نظرم از ساعتی که تو خود سیستم هست استفاده کن ... نمی دونم این حرفم درسته یا نه ... ساعت ویندوز از همون استفاده می کنه ...
اگه اشتبا می کنم بگید ...:اشتباه:

سهیلا صالح نوسی
پنج شنبه 25 آذر 1389, 16:17 عصر
به نظر من بهترین راه استفاده از تاریخ خود سیستم هستش!

ahrimaneahurai
پنج شنبه 25 آذر 1389, 17:27 عصر
ممنون دوستان
مشکل اصلیم این بود که چطور تاریخ اصلی رو بگیره که وصل شدن به اینترنت راه حل اصلی بود
اما برای استفاده از ساعت خود ویندوز مشکل اینه که فرض الان ساعت 10 صبح است اما ساعت ویندوز ساعت 2 شب هست. اینجوری من باید متن های فرداش رو نشون بدم که مشکل بوجود میاد
بهترین راه حل اینه که اولین بار به اینترنت وصل شم و و هر 24 ساعت کارای مورد نظرمو انجام بدم
ممنون دوستان

ahrimaneahurai
پنج شنبه 25 آذر 1389, 18:02 عصر
برای ادامه بجث ممنون میشم به این لینک سر بزنید
دریافت تاریخ و ساعت محلی از اینترنت (http://barnamenevis.org/showthread.php?265127-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%88-%D8%B3%D8%A7%D8%B9%D8%AA-%D9%85%D8%AD%D9%84%DB%8C-%D8%A7%D8%B2-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA&p=1173653#post1173653)

massar
پنج شنبه 25 آذر 1389, 21:02 عصر
دوست عزیز لازم نیست انقد تند بری، خود ویندوز این امکانو داره که ساعت خودشو از منابع قابل اعتماد روی نت آپدیت کنه، فقط کافیه یه دستور ساده اجرا کنی:


NET TIME

[\\computername | /DOMAIN[:domainname] | /RTSDOMAIN[:domainname]] [/SET]مثلا اگه اسم کامپیوتر من myPC باشه میشه:


NET TIME \\myPC /SET /YESباید حتما yes رو بزنی وگرنه از کاربر میپرسه که آیا میخواد اینکارو بکنه یا نه.
برای کارکردن این راهای زیادی هست ولی اگه فقط همین یه خط نیازتو رفع میکنه از متد استاتیک کلاس Process.Start استفاده کن و اگه لازم شد اسکریپت بنویسی میتونی یه batch script وقتی لازم شد با کد ایجاد کنی اجراش کنی و بعد پاکش کنی (البته اگه نمیخوای کسی ببیندش، ولی بهرحال برنامت باید بتونه بسازدش که اگه بلایی سر اسکریپت اومد برنامه ناقص نشه) البته اگه بخوای چیز خوبی بشه باید یکسری موارد مثل اتصال به اینترنت رو چک کنی.
یه پیشنهاد دگه اینه که در کنار بقیه موارد، میتونی یه تاریخ مثلا تو تنظیمات برنامه بزاری که وقت اجرا شدن تاریخ فعلی رو با اون تاریخ مقایسه کنه، اگه تاریخ خودش جدیدتر بود به کاربر هشدار بده که تاریخ سیستمش غلطه و ممکنه کارکرد برنامه با اشکال مواجه بشه تا کاربر بدونه که چرا برنامه درس کار نمیکنه.

راستی فراموش کردم میتونی به جای myPC از %COMPUTERNAME% (همین الان cmd رو باز کن و توش بزن echo %COMPUTERNAME% :بامزه: ) استفاده کنی اینجوری اسکریپت رو هر ماشینی بدون تغییر اجرا میشه.

ahrimaneahurai
پنج شنبه 25 آذر 1389, 23:53 عصر
ممنون دوست عزیز
نمی دونم پست قبلیم رو خوندید یا نه ؟
اما من به این نتیجه رسیدم که ساعت و تاریخ رو از اینترنت بخونم و بعد خودم همه چیز رو محاسبه کنم
دستوری که دادید ساعت خود ویندوز رو برمیگردونه
اما مثلا من می خوام به اینترنت وصل شه و از یه سایت یا سرور تاریخ و ساعت رو بگیره.
باز هم از توجهتون ممنون

massar
جمعه 26 آذر 1389, 13:12 عصر
Guess what! اگه ساعت ویندوزو آپدیت کنید، میتونید با DateTime.Now تاریخ بروزو بگیرید، البته اینکه آدم مستقیم بگیره تاریخو از نت هم مزایا و کاربردهای خودشو داره.

ahrimaneahurai
جمعه 26 آذر 1389, 13:43 عصر
ساعت ویندوز رو نمی خوام آپدیت کنم
چون بیشتر برنامه های کاربرا کرک شده هست و بعضی کرک ها بر اساس تاریخ هست که اگه دست کاری شه ممکنه کرکش از بین بره و اون دنیا یه حالی به ما بدن
فعلا تو کد گرفتن ساعت و تاریخ از اینترنت موندم. هیچ کدوم کار نمی کنن