PDA

View Full Version : گذاشتن محدودیت واسه برنامه



na3er-faraji
دوشنبه 14 خرداد 1386, 10:09 صبح
من میخام رو برنامم محدودیت اجرا بزارم . مثلا بعد از 15 روز برنامه از کار بیفته . کسی الگوریتمی واسه این کار سراغ داره . من میتونم در تعداد دفعات اجرا محدودیت بزارم . مثلا برنامه بعد از 20 با اجرا از کار بیفته ولی اگه بخوام این محدودیت روزی باشه باید چیکار کنم . مثلا میشه هر دفعه که برنامه اجرا میشه یک متغیر تو رجیستری در نظر بگیریم و یکی به اون اضافه کنیم و مثلا اگه 20 شد دیگه برنامه اجرا نشه . اما واسه تاریخ اگه کاربر تاریخ رو دستکاری کنه دیگه نمیشه . کسی میتونه کمک کنه؟

yavari
دوشنبه 14 خرداد 1386, 17:01 عصر
سلام

اینجا یه بحث کاملی شده !
http://www.barnamenevis.org/forum/showthread.php?t=63483&highlight=%D1%E6%D2+%C7%CC%D1%C7

موفق باشید

na3er-faraji
دوشنبه 14 خرداد 1386, 19:12 عصر
نه منظورم این نبود . شما سوال منو درست نخوندید

na3er-faraji
سه شنبه 15 خرداد 1386, 07:16 صبح
دوستان کسی نمبوتنه کمک کنه

perfeshnal
سه شنبه 15 خرداد 1386, 08:54 صبح
سلام
من در مورد سوال شما زیاد فکر کردم ولی چیز زیادی به ذهنم نرسید البته این کار در ویژوال بیسیک شدنی هست چون من برنامه های زیادی رو دیدم.
بهتره شما اولین دفعه که برنامه اجرا میشه تاریخ سیستم رو در جایی ذخیره کنید بعد هر دفعه که برنامه اجرا میشه چک کنید تاریخی که هم اکنون روی اون سیستم هست بیشتر از تاریخ ذخیره شده است یا نه پایین تره یعنی دست کاری شده اون موقع می تونی به کاربر اخطار بدی که زمان سیستم رو به حالت قبل برگردونه
بازم اگر دوستان راهی برای این کار در نظر دارند راهنمایی کنند.

na3er-faraji
سه شنبه 15 خرداد 1386, 10:38 صبح
نه یک روش دیگه باید باشه . چون حتی وقتی تاریخ رو هم دستکاری می کنی برنامه سر مدت معین از کار میفته . حتی تو این برنامه های درپیتی ایرانی ها هم خیلی دیدم . نبود ؟

noorsoft
سه شنبه 15 خرداد 1386, 10:48 صبح
شما با رجیستری میتوانید اینکار را به راحتی انجام دهید

__siavash__
سه شنبه 15 خرداد 1386, 10:55 صبح
شما با رجیستری میتوانید اینکار را به راحتی انجام دهید
خوب متغیر یا تاریخ رو که تو ریجستری ذخیره میکنیم اما مشکل بالا رو چه طوری میشه حل کرد !
من فکر میکنم بعد از اولین بار اجرا یه متغییر تعریف میکنند بعد یه تایمر تو برنامه میزارند و بعد هر دقیقه یه واحد بهش اضافه میکنند تا 15 * 24 * 60
البته اگه کامپیوتر خاموش باشه نمیشه !

بازم روش فکر میکنم ببینم چیزی به ذهنم میرسه .:متفکر:

h_sadeghynejad
سه شنبه 15 خرداد 1386, 15:13 عصر
بهترین کار اینکه یه برنامه دیگه به صورت مخفی به عنوان تایمر قرار بگیره توی استارت آپ

__siavash__
سه شنبه 15 خرداد 1386, 18:25 عصر
بهترین کار اینکه یه برنامه دیگه به صورت مخفی به عنوان تایمر قرار بگیره توی استارت آپ
خوب اون زمان هایی رو که کامپیوتر خاموشه چه طوری محاسبه میشن ؟

na3er-faraji
چهارشنبه 16 خرداد 1386, 07:05 صبح
عزیزان دیگه هم اگه چیزی به ذهنشون میرسه کمک کنند

__siavash__
چهارشنبه 16 خرداد 1386, 09:29 صبح
ببین این ایده مشکلی نداره!
بعد از اولین اجرا زمان آغازی و پایانی رو ثبت کن بعد هر بار که از برنامه خارج میشی زمان آغازی رو به زمان خروج از برنامه ست کن
خوب حالا بعد هر بار که اجرای برنامه زمان جاری رو چک کن بین این دو مقدار باشه اگه نبود برنامه رو غیر فعال کن !

Mbt925
چهارشنبه 16 خرداد 1386, 13:06 عصر
یه سوال اینجا مطرحه !
اینکه برنامه قرار دقیقا 15 روز کار کنه ؟ یعنی 15 روز مفید یا نه .
مثلا اگه امروز برنامه فقط 1 بار به مدت 20 دقیقه اجرا شد یه روز گذشته و زمان باقی مانده شده 14 روز یا اینکه فقط 20 دقیقه از 15 روز کم شده ؟

اگه حالت دوم مدنظرتون باشه ، یعنی 15 روز مفید ، راهی که دوستمون گفتن جواب میده ، یعنی هر بار مدت اجرای برنامه رو توی رجیستری با مقدار قبلی جمع کنیم.

__siavash__
چهارشنبه 16 خرداد 1386, 13:43 عصر
من فکر میکنم دقیقا 15 روز مد نظره حالا چه استفاده بکنه چه نکنه! ( من خودم فوتو شاپ نصب کردم اصلا استفاده نکردم بعد از 15 روز غیر فعال شد )

touraj
چهارشنبه 16 خرداد 1386, 14:49 عصر
ببین این ایده مشکلی نداره!
بعد از اولین اجرا زمان آغازی و پایانی رو ثبت کن بعد هر بار که از برنامه خارج میشی زمان آغازی رو به زمان خروج از برنامه ست کن
خوب حالا بعد هر بار که اجرای برنامه زمان جاری رو چک کن بین این دو مقدار باشه اگه نبود برنامه رو غیر فعال کن !

به نظر من هم این ایده خوب و منطقیه. چون با تغییر تاریخ هم مشکلی پیش نمیاد.
ضمناً فکر نکنم 15 روز مفید مطرح باشه. از زمان نصب 15 روز. چه کاربر استفاده کنه و چه نکنه.

MohammadSoft
چهارشنبه 16 خرداد 1386, 15:08 عصر
سلام
شما می توانید جلوی تغییر ساعت رو بگیرید با استفاده از systemevents.timechanged بگیرید ولی این کار مناسبی نیست !!

Hossein Bazyan
چهارشنبه 16 خرداد 1386, 16:00 عصر
سلام
در رجیستری دو کلید تعریف کن یکی برای تاریخ و دیگری برای شمارنده ( اگر ورودیها رو کد بکنی بهتر هم میشه )
بعد از نصب برنامه تاریخ رو در کلید رجیستری بنویس حال با هر بار ورود به برنامه تاریخ جاری را با تاریخ اول مقایسه کن اگر یکسان نبودند یک واحر به شمارنده اضافه کن تا شمارنده به 20 میرسه بعد میتوانی از اجرای برنامه جلوگیری نمایی
فرض کن بعد از بیست روز کاربر تاریخ را عوض کند ( یا فرق نمیکنه بعد از هر مدت که تاریخ رو عوض نمود) چون با تاریخ نصب یکی نیست طبعا یک واحد به شمارنده هم اضافه میشود
در دو حالت کاربر میتواند محدودیت را از بین ببرد:

هر بار قبل از اجرای برنامه ، تاریخ سیستم را به تاریخ روز نصب برگرداند یا اینکه بعد از بیست روز تاریخ را به روز نصب برگرداند و این کار را هر روز تکرار کند که در اینحالت هر چقدر هم برنامه مهم باشه فکر نکنم کاربر از عوض کردن تاریخ سیستم خسته نشه ! در ضمن یادمان باشه که تاریخ سیستم برای کاربر خیلی مهمه
کاربر بتواند از شگرد برنامه سر دربیاورد که تقریبا احتمالش خیلی کمه !باز هم موارد بالا بستگی داره به اینکه برنامه چقدر برای کاربر و برنامه نویس مهم باشه !

__siavash__
چهارشنبه 16 خرداد 1386, 16:24 عصر
سلام
در رجیستری دو کلید تعریف کن یکی برای تاریخ و دیگری برای شمارنده ( اگر ورودیها رو کد بکنی بهتر هم میشه )
بعد از نصب برنامه تاریخ رو در کلید رجیستری بنویس حال با هر بار ورود به برنامه تاریخ جاری را با تاریخ اول مقایسه کن اگر یکسان نبودند یک واحر به شمارنده اضافه کن تا شمارنده به 20 میرسه بعد میتوانی از اجرای برنامه جلوگیری نمایی
فرض کن بعد از بیست روز کاربر تاریخ را عوض کند ( یا فرق نمیکنه بعد از هر مدت که تاریخ رو عوض نمود) چون با تاریخ نصب یکی نیست طبعا یک واحد به شمارنده هم اضافه میشود
در دو حالت کاربر میتواند محدودیت را از بین ببرد:

هر بار قبل از اجرای برنامه ، تاریخ سیستم را به تاریخ روز نصب برگرداند یا اینکه بعد از بیست روز تاریخ را به روز نصب برگرداند و این کار را هر روز تکرار کند که در اینحالت هر چقدر هم برنامه مهم باشه فکر نکنم کاربر از عوض کردن تاریخ سیستم خسته نشه ! در ضمن یادمان باشه که تاریخ سیستم برای کاربر خیلی مهمه
کاربر بتواند از شگرد برنامه سر دربیاورد که تقریبا احتمالش خیلی کمه !باز هم موارد بالا بستگی داره به اینکه برنامه چقدر برای کاربر و برنامه نویس مهم باشه !
این کار وقتی جواب میده که کاربر فقط روزی یه بار برنامه رو اجرا کنه.
اگه منظور شما رو درست فهمیده باشم، اگر روز دوم 20 بار برنامه رو اجرا کنیم برنامه تو همون روز دوم از کار میوفته!
مگر همون طوری که قبلا گفتم تاریخ خروج از برنامه رو به عنوان تاریخ مقایسه ای ست کنی
یعنی برنامه، اول تاریخ رو چک کنه بعد به تاریخ جاری تغییرش بده

Hossein Bazyan
چهارشنبه 16 خرداد 1386, 21:10 عصر
سلام
دوست عزیز خوب دقت نکردی
اگر روزی 10 بار هم برنامه اجرا بشه به مقدار Counter ( که همان کنترل محدودیت است ) اضافه نمیشه
یه بار دیگه هم مطلب را بخوان

na3er-faraji
پنج شنبه 17 خرداد 1386, 07:22 صبح
فکر نکنم کاربر از عوض کردن تاریخ سیستم خسته نشه !
من اگه بخام 400000 تومان واسه یه برنامه پول بدم تا آخر عمرم هر روز ساعت رو عقب می کشم . :قهقهه:

نظر من هم همان طور که دوستان گفتند همان 15 روزه چه استفاده بشه چه نشه .

آقای siavash آیا روش شما با تغییر دادن تاریخ هم درست کار می کنه ؟

در ضمن فکر نمی کنم جلوگیری از دسترسی به تاریخ کار زیاد حرفه ای باشه ! دوستان چی فکر می کنند؟

__siavash__
پنج شنبه 17 خرداد 1386, 10:15 صبح
سلام
دوست عزیز خوب دقت نکردی
اگر روزی 10 بار هم برنامه اجرا بشه به مقدار Counter ( که همان کنترل محدودیت است ) اضافه نمیشه
یه بار دیگه هم مطلب را بخوان
بازم متن بالا رو خوندم اما
مگه شما نمیگی
بعد از نصب برنامه تاریخ رو در کلید رجیستری بنویس حال با هر بار ورود به برنامه تاریخ جاری را با تاریخ اول مقایسه کن اگر یکسان نبودند یک واحر به شمارنده اضافه کن تا شمارنده به 20 میرسه بعد میتوانی از اجرای برنامه جلوگیری نمایی
خوب فرض کن امروز برنامه اجرا شد و تاریخ امروز ثبت شد، حالا اگه امروز 10 بار هم برنامه اجرا بشه خوب تاریخ امروز با تاریخ ثبت شده چک میشه چون یکسان هستند به شمارنده چیزی اضافه نمیشه این درست
اما فردا که برنامه اجرا بشه چون تاریخ یکی نیست یه واحد به شمارنده اضافه میشه پس تو همین روز اگه 10 بار برنامه اجرا بشه 10 بار تاریخ چک میشه و 10 بار به شمارنده یک واحد اضافه میشه ( من از جمله شما این طوری برداشت کردم )


آقای siavash آیا روش شما با تغییر دادن تاریخ هم درست کار می کنه ؟
نمیشه گفت اونم خیلی روش کاملیه اما به نظر من تلفیق اون روش با روش Hossein Bazyan بهتر باشه تا فعلا !
یعنی تو روش Hossein Bazyan تاریخ خروج از برنامه رو به عنوان تاریخ مقایسه ای ست کنی
یعنی برنامه، اول تاریخ رو چک کنه بعد به تاریخ جاری تغییرش بده این طوری اگه در روز 20 بار هم برنامه اجرا بشه دیگه به شمارنده چیزی اضافه نمیشه

البته بازم جای فکر داره من بازم فکر میکنم ببینم چیز بهتری به ذهنم میرسه :متفکر:

Hossein Bazyan
پنج شنبه 17 خرداد 1386, 13:49 عصر
سلام
حق با شما بود من برای روزهای بعد دقت نکرده بودم
اما دوباره میخوام روی آن فکر کنم آخه موضوع جالبیه
من سعی خودم رو میکنم و شما هم که به نتیجه رسیدی به ما هم اطلاع بده

__siavash__
پنج شنبه 17 خرداد 1386, 18:42 عصر
راستی من الان داشتم فکر میکردم اون روش شمارنده یه مشکل دیگه هم داره اونم اینه که اگر فرض کنیم کاربر امروز برنامه رو اجرا کرد بعد دفعه بعد که برنامه رو اجرا میکنه 10 روز بعد از اولین اجرا باشه در این صورت 10 روز گذشته ولی شمارنده فقط 1 واحد اضافه شده

( ما میخوایم 15 روز بعد از اولین اجرا برنامه از کار بیفته چه استفاده بشه چه نشه البته فعلا فرض بر اینه که کابر تو ریجستری دستکاری نکنه!
بعد از حل شدن این قسمت به اون جنبه هم میپردازیم )

Hossein Bazyan
پنج شنبه 17 خرداد 1386, 23:57 عصر
سلام
اگر برنامه ت دارای دیتا بیس هست میتونی از دیتا بیس خود برنامه استفاده کنی ( به جای رجیستری)

جدولی با یک فیلد در دیتا بیس بساز فرض کنیم با نام Date
حال هر بار که برنامه اجرا میشه تاریخ آنروز را در دیتابیس کنترل کن اگر با همان روز برابر بود که هیچ در غیر اینصورت تاریخ روز را در فیلد Date ذخیره کن .
حال برنامه زمانی اجرا بشه که تعداد رکوردها کمتر از 15 باشد .

در اینحالت اگر کاربر هر بار و قبل از اجرای برنامه تاریخ را به یکی از روزهای موجود در دیتابیس برگرداند رکورد اضافه نمیشود در غیر اینصورت رکورد اضافه میشود.

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

( ما میخوایم 15 روز بعد از اولین اجرا برنامه از کار بیفته چه استفاده بشه چه نشه

یعنی باید کاربر در 15 روز مختلف برنامه را اجرا کند . یعنی شاید در طول یکسال هم برنامه را 15 بار اجرا نکند


برای این موردی باید فکر دیگری بکنیم

na3er-faraji
جمعه 18 خرداد 1386, 09:53 صبح
آقا siavash و آقا hossein ممنون از همکاریتون . من خودم هم دارم روش کار می کنم . اگه دوستان دیگه هم ایده جالبی در این زمینه دارن میتونن کمک کنن . البته فعل مشکل من روی الگوریتم برنامست . مکان ذخیرش رو بعدا هم میشه تعیین کرد که فکر می کنم تو بانک جاش امن تر باشه ؟!

__siavash__
یک شنبه 27 خرداد 1386, 23:23 عصر
آقا من هنوز دارم رو این مطلب فکر میکنم هر چی هم فکر میکنم میبینم راهی بهتر از اونایی که بحث کردیم وجود نداره !
آخه امروز یه برنامه نصب کردم که 15 روزه بود بعد تاریخ رو که به عقب بردم یه اخطار داد که تاریخ دستکاری شده و در صورت دوباره ران کردن برنامه، برنامه غیر فعال میشه و بعد که تاریخ رو به جلو بردم از زمان باقیمانده کم میشد این نشون میده که برنامه هر وقت که اجرا میشه اختلاف بین زمان، 15 روز بعد از نصب رو با زمان اجرا مقایسه میکنه !

تازه شنیدم بعضی ها از کابر ها میان زمان سیستم رو قفل میکنند که زمان جلو نره ( البته من خودم تا حالا ندیدم )


MohammadSoft

سلام
شما می توانید جلوی تغییر ساعت رو بگیرید با استفاده از systemevents.timechanged بگیرید ولی این کار مناسبی نیست !!
(http://barnamenevis.org/forum/member.php?u=34538)میشه دقیقا بگی چه طوری ؟؟؟

noorsoft
دوشنبه 28 خرداد 1386, 06:08 صبح
کامپوتر که خاموش میشه هنوز ساعت داره کار میکنه چون باطری جداگونه داره میتونی وقتی روشن شد زمانهای سپری شده را محاسبه کنی
البته شما میتوانی تغییرات ناگهانی ساعت و تاریخ را بفهمی

Hossein Bazyan
دوشنبه 28 خرداد 1386, 09:05 صبح
کامپوتر که خاموش میشه هنوز ساعت داره کار میکنه چون باطری جداگونه داره میتونی وقتی روشن شد زمانهای سپری شده را محاسبه کنی
البته شما میتوانی تغییرات ناگهانی ساعت و تاریخ را بفهمی

سلام
خیلی کلی گفتی . روشنترش کن

senator_aka
دوشنبه 28 خرداد 1386, 13:00 عصر
شما اول باید یه زیر برنامه تو برنامه ات قرار بدی که بعد از هر بار روشن شدن سیستم لوید بشه و تاریخ را در یک رجیستری ثبت کنه.بعد با استفاده از یک تایمر که داره حرکات منظم یک ساعت را چک کنه! فراموش نکنید که یک ساعت ثانیه به ثانیه می ره جلو پس تایمر شما باید ثانیه ها را چک کند و اگه زیر برنامه متوجه یک حرکت غیرعادی شد مثلا ساعت به یک زمان قبل برگشته این حالت را در رجیستری ثبت می کنه اما اگه جلو رفت هیچ کاری نمی کنه ( وقتی ساعت جلو می ره هیچ کاری نمی کنه چون این یک راه برای فشار آوردن به کاربر تا زودتر برنامه را بخره با رجیسترش کنه شما می تونید اگه ساعت جلو برد باز هم به کاربر اخطار بدبد اما این کار درست نیست چون ممکن کا واقعا ساعت عقب باشه . ولی اگه شما باز هم خیلی مهربون هستید و می خواهید واقعا به کاربر 15 روز مهلت بدید(کاری که کمتر شرکتی انجام می ده) می تونید به ازای روزها و ساعت های به جلو رفته به ساعت و روز اول اضافه کنید) .


حالا نوبت به برنامه اصلی شما با ید بعد از هرباراجرای برنامه چک کنید که اول از همه زیر برنامه کار می کنه یا نه بعد می رید سراغ چک کردن رجستری برای پیدا کرد تغییر ساعت اگعه به عقب رفته باشه یک اخطار میدید و بعد تو رجستری یه مقدار دیگه ثبت می کنید که اگه این مقدار مثلا برابر 1 باشه برنامه هیچ وقت اجرا نشه !!

حتی شما می تونید تو زیر برنامه با تایمری که داره چک کنید که آیا کاربر به صورت دستی مقدار های رجستری رو تغییر داده یا نه ؟

فقط باید زیر برنامه مخفی باشه می تونید این زیر برنامه را بچسبانید به explorer ویندوز که هر بار explorer اجرا میشه زیر برنامه هم حتما باهاش اجرا بشه ( یه مقداری هک کاری لازمه و گرنه با وجود این هکر های باحال دست تون به هیج جا بند نیست ).من explorer را گفتم چون برای اینکه کاربر چیزی رو بتونه تغییر بده تو محیط ویندوز اغلب باید از explorer ویندوز استفاده کنه .


این کاری هست که همه شرکت های بزرگ انجامش می دن

__siavash__
دوشنبه 28 خرداد 1386, 14:20 عصر
نمی دونم مشکل کار شما کجاست

یعنی شما میگی یه فایل شمارنده ی جدا داشته باشیم که بیاد ثانیه به ثانیه زمان رو بشمره ؟!
فکر نکینم این هم جواب بده چون بازم اون مشکل که اگه مثلا 10 روز کامپیوتر روشن نشه مشکل ایجاد میکنه
اون زمان هایی که کامپیوتر خاموشه رو چه جوری ثبت میشه ؟
خوب حالا از ادغام نظر های بالا این روش به این صورت اصلاح میشه که:
ما باید برای این کار یه زیر برنامه جدا داشته باشیم که بعد از اولین اجرا زمان ابتدایی و انتهایی (15 روز بعد) رو ثبت کنه و بعد از هر بار بالا اومدن ویندوز زمان ابتدایی رو به زمان جاری تغییر بده و اختلاف این دو زمان رو به عنوان زمان باقیمانده به کاربر اطلاع بده !
حالا اونو تو استارت آپ قرار بدیم (یا به قول senator_aka اونو بچسبونیم به explorer ( که من این کارو بلد نیستم اگه کسی توضیح بده ممنون میشیم !!!))

خوب حالا باید موقع اجرا شدن برنامه از وجود این زیر برنامه و در استارت آپ بودن اون باخبر بشیم، اگه این زیر برنامه نبود یا تو استارت آپ نبود برنامه رو غیر فعال میکنیم.

بازم اگه راهی بود برای دور زدن این 15 روز بگید !

senator_aka
دوشنبه 28 خرداد 1386, 16:29 عصر
من نمی دونم چرا دوستان اینقدر سعی دارند این مسئله به این کوچکی را اینقدر بزرگ جلوه بدند.

من خودم این مسائل را از دوستان این سایت یاد گرفتم و نمی دانم آنها الآن کجا هستند که تا حالا به شما جواب ندادند.

اما بیشتر و بهتر برای شما و دیگر دوستان توضیح می دهم.

یکی اینکه وقتی کامپیوتر روشن میشه قبل از بالا اومدن سیستم عامل ، تمام موارد در بایوس چک می شه بعد سیستم عامل با استفاده از بایوس خودش را آپدیت می کنه ( منظورم زمان و تاریخ هست ) سپس لوید می شه و با لا می آید.

ویندوز یا هر سیستم عامل دیگری یه محیط کاربری داره که برای ارتباط بهتر با کاربر هست و در ویندوز های مایکروسافت این محیط همان برنامه Explorer هست که اگه همین الآن شما تو task manager سیستمتان را نگاه کنید فعال هست.

اگه کاربر بخواهد ساعت و تاریخ را تغییر دهد باید یا از طریغ بایوس این کار را بکند یا از طریق رابط کاربری سیستم عامل که همان پنجره explorer هست.پس ما با چسباندن زیر برنامه به این پنجره قبل از اینکه کاربر بتواند کاری انجام دهد یعنی قبل از تغییر ساعت و تاریخ ما این زیر برنامه را فعال کردیم.پس اگه ساعت و تاریخ تغییر غیر عادی داشته باشد زیر برنامه متوجه شده و دستور مورد نظر را به برنامه مادر می دهد .
از طرفی اگه کاربر پنجره Explorer را ببندد دیگر نمی تواند ساعت و زمان را بصورت دستی تغییر دهد و اگر هم با برنامه ای این کار را انجام دهد بعد از خاموش و روشن شدن سیستم و دوباره لوید شدن، زیربرنامه متوجه تغییر غیر عادی ساعت و زمان می شود و دستور مورد نظر را انجام می دهد.

در مورد 10 روز یا 100 روز با هر چند روز هم باید بگم که وقتی برنامه دارد زمان را از خود ویندوز دریافت می کند دیگر نیازی نیست که ما از تایمر برای درست کردن یک ساعت مصنوعی استفاده کنیم و از تامیر فقط برای چک کردن تغییرات ساعت سیستم استفاده می کنیم.فقط باید برنامه اصلی وقتی شروع می شود ساعت و تاریخ را در رجستری ذخیره کند و در هنگام پایان برنامه نیز دوباره ساعت و تاریخ را در همان مقدار رجستری جایگزین کند.
از اختلاف زمان جاری و زمان قبل تعداد روز های باقی مانده بدست می آید به همین راحتی !!

حتی شما می توانید از هیچ زیر برنامه ای برای این کار استفاده نکنید و تنها بعد از هر بار باز شدن برنامه و قبل از ورود به محیط برنامه تمام موارد با لا را چک کنید و اگه مشکلی نبود ان را اجرا کنید ( اینو گفتم برای اینکه زیاد سخت نگیرید که برنامتون حتما باید به Explorer بچسبه و از این حرفاااااا ). اما باید حتما در startup یک بار این کار را بکند و تاریخ فعلی را ثبت کند تا متوجه تغییر زمان بشود.

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

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

اگه باز هم نیازی به توضیح بیشتر بود بگید تا براتون بیشتر توضیح بدهم.

Evil 69
سه شنبه 29 خرداد 1386, 09:07 صبح
شما میتونی با استفاده از تابع datediff تعداد روزهایی که برنامه کار کرده بدست بیاری بعد هر کاری که میخوای بکنی
اگر خاستی pm بذار تا برات کدشو بفرستم ( من خودم چند وقت پیش این مشکل رو داشتم)

Evil 69
سه شنبه 29 خرداد 1386, 09:10 صبح
نه یک روش دیگه باید باشه . چون حتی وقتی تاریخ رو هم دستکاری می کنی برنامه سر مدت معین از کار میفته . حتی تو این برنامه های درپیتی ایرانی ها هم خیلی دیدم . نبود ؟
برنامه ایرانی ها در پیت نیست مغر ایرانی ها خوب کار میکنه جوون

Evil 69
سه شنبه 29 خرداد 1386, 09:12 صبح
وقیتی کامپوتر خاموشه خودش حساب می کنه به تو کار نداره تو فقط با همون تابعی که گفتم فاصله زمانی شو پیدا کن:قهقهه:

Evil 69
سه شنبه 29 خرداد 1386, 09:34 صبح
میتونی از تابع datediff استفاده کنی

__siavash__
سه شنبه 29 خرداد 1386, 10:41 صبح
شما میتونی با استفاده از تابع datediff تعداد روزهایی که برنامه کار کرده بدست بیاری بعد هر کاری که میخوای بکنی
اگر خاستی pm بذار تا برات کدشو بفرستم ( من خودم چند وقت پیش این مشکل رو داشتم)
خوب کدتو بذار !

Evil 69
سه شنبه 29 خرداد 1386, 13:12 عصر
تو میتونی از تابع datediff استفاده کنی
شکل کلی : datediff(interval,startd_date,end _date)
البته چند تا ارگومان دیگه هم داره ولی به درد تو نمی خوره .

مثال :
اول یک بانک اطلاعاتی درست می نکی بعد تو یکی از فیلداش با vb این اطلاعات رو میریزی
نام فیلد=date() بعد توی فرم لود می نویسی : اطلاعاد فیلد رو که دفعه قبل وارد کردی تو یک متغیر مثل x قرار میدی بعد مینویسی :
if datediff("d",date(),x)>=19 then end
مقدار هایی که interval میگیره : year="yyyy"
day="d"
quarter="q"
week="ww"
hour="h"
minute="n"
secound="s"

Evil 69
سه شنبه 29 خرداد 1386, 14:17 عصر
اینم کد برای تو siavash

senator_aka
چهارشنبه 30 خرداد 1386, 10:33 صبح
آیا کسی از روش evil69 استفاده کرده /

لطفا نتیجه اش رو تو این تاپیک بگه؟

__siavash__
چهارشنبه 30 خرداد 1386, 14:33 عصر
آیا کسی از روش evil69 استفاده کرده /

لطفا نتیجه اش رو تو این تاپیک بگه؟
این طوری که من فهمیدم اون روش داره اختلاف بین دو تاریخ رو حساب میکنه !!!! ؟؟؟؟
اما مشکل ما این جا نبود مشکل تو جلو گیری از دستکاری تاریخ و متوجه شدنه برنامه بود !

ehsan_882000
شنبه 09 تیر 1386, 18:22 عصر
as system timer estefade kon va as now

__siavash__
یک شنبه 10 تیر 1386, 16:17 عصر
as system timer estefade kon va as now
راجع به system timer میشه بیشتر توضیح بدی !

majjjj
یک شنبه 24 تیر 1386, 20:47 عصر
با سلام
اگه موقع خروج برنامه این کارها انجام بشه فکر کنم نتیجه بهتر باشه

majjjj
یک شنبه 24 تیر 1386, 20:51 عصر
راجع به system timer میشه بیشتر توضیح بدی !
فکر کنم منظورشون تایمر خود سیستم باشه

__siavash__
یک شنبه 24 تیر 1386, 21:18 عصر
فکر کنم منظورشون تایمر خود سیستم باشه
نه فکر نمیکنم !

توی VB.Net یا همون VB8 یه آبجکت داره به اسم System که خودش پراپرتی های خودشو داره
فکر کنم منظور این باشه !!!