PDA

View Full Version : برنامه از تاریخ جاری یعنی 17 دسامبر2007 تا دو ماه دیگر کار کند



ali_abbasi22145
دوشنبه 26 آذر 1386, 15:18 عصر
سلام
می خواهم برنامه از تاریخ جاری یعنی 17 دسامبر2007 تا دو ماه دیگر کار کند و از این تاریخ گذشت پیغام Expire of Program بدهد.
اگر با تابع between بگویید بهتر است. ببخشید که هرچه انواع شرطها را تست کردم نتوانستم متاسفانه این مشکل ساده را حل کنم.

If date .....then
begin
ShowMessage(' Expire of Program);
Application.Terminate;
Exit;
end;

Cave_Man
دوشنبه 26 آذر 1386, 15:27 عصر
برای درست کردن نسخه های Trial میتونی از Protector ها استفاده کنی این راهها معمولا مطمئن تر هستن
سایت های نرم افزاری مثل Download.com هم سرویسی دارن که که برنامه شما رو میگیرن و Tiral رو براش ایجاد میکنن.

ali_abbasi22145
دوشنبه 26 آذر 1386, 15:39 عصر
متشکر ولی اینقدر امکانات برای آزمایشی گذاشتم که خیلی طول می کشد تا همه آنها را کرک کنند (که مطمئنم نمی توانند!) و کافی است اگر این حالت را هم بگذارم کامل می شود.

A.Nemati
دوشنبه 26 آذر 1386, 15:48 عصر
نمی‌دونم می‌خواهی چکار کنی و این تاریخی که گفتی واقعا استاتیکه یا نه ولی ممکنه این بدردت بخوره.


var
d, d1: TDate;
begin
d:= 39433; // Today (2007/12/17)
d1:= d + 60;
if now > d1 then
begin
ShowMessage('Expire of Program');
Application.Terminate;
Exit;
end
else
...
end;


البته اگه تاریخت بستگی به تاریخ نصب داره (که احتمالا همینطوره)، راه‌های مختلفی برای نگهداری امن این تاریخ وجود داره.

Delphi Coder
دوشنبه 26 آذر 1386, 15:55 عصر
2ماه=60*24*60*60 *1000= 5184000000 میلی ثانیه
تو بازه Int64 جا میشه این باید جواب بده


MilliSecondsBetween(Now,InstallTime)

InstallTime هم که باید زمان دفعه اول که اجرا میشه رو یه جا save کنید و اینجا مقداردهی کنید.
مشکلتون کجای کار هست دقیقا؟






برای درست کردن نسخه های Trial میتونی از Protector ها استفاده کنی این راهها معمولا مطمئن تر هستن
سایت های نرم افزاری مثل Download.com هم سرویسی دارن که که برنامه شما رو میگیرن و Tiral رو براش ایجاد میکنن.

یه ایرادی اینجا هست و اونم اینکه اکثر Protector ها از Release شون 2 3 ماه نگذشته hack میشن شاید کسی نمی خواسته برنامه شما رو هک کنه ولی چون اون Protector رو چند تا برنامه با ارزش دیگه هم بوده یا هست 3 سوت دخلشو درمیارن cracker هم میذارن net. برای همین من درست عکس شما فکر میکنم یه if then ساده تو برنامه خود آدم خیلی امن تره.

ali_abbasi22145
دوشنبه 26 آذر 1386, 16:19 عصر
نمی‌دونم می‌خواهی چکار کنی و این تاریخی که گفتی واقعا استاتیکه یا نه ولی ممکنه این بدردت بخوره.


var
d, d1: TDate;
begin
d:= 39433; // Today (2007/12/17)
d1:= d + 60;
if now > d1 then
begin
ShowMessage('Expire of Program');
Application.Terminate;
Exit;
end
else
...
end;


البته اگه تاریخت بستگی به تاریخ نصب داره (که احتمالا همینطوره)، راه‌های مختلفی برای نگهداری امن این تاریخ وجود داره.

سلام
کد شما کارم را می اندازد.
آیا این عدد معادل امروز 39433 را با DecodeDateTime(now); گرفتید؟ یا جور دیگر تبدیل کردید؟

A.Nemati
دوشنبه 26 آذر 1386, 16:34 عصر
Trunc(Now)
مثلا
ShowMessage(IntToStr(Trunc(Now)))

SYNDROME
دوشنبه 26 آذر 1386, 17:39 عصر
فقط به یک نکته نیز توجه کنید.
اگر تاریخ سیستم عقب کشیده شده و یا از تاریخ مورد نظر تجاوز ککرد باید یک Flag یک شود تا کاربر با عقب کشیدن تاریخ دوباره از سیستم استفاده نکند.
موفق باشید

Valadi
دوشنبه 26 آذر 1386, 18:10 عصر
شما می تونید از کامپونتهای که چنین امکاناتی دارند استفاده کنید
مانند mxProtector و چند تای دیگه که کامپونتهای حرفه ای که یادم نیست

ضمنا این قابلیت هم هست که
1 - تعداد اجرا برنامه
2 - برنامه فقط در X ساعت کار کند مثلا برنامه شما 2 ساعت کلا کار کند

ali_abbasi22145
سه شنبه 27 آذر 1386, 15:29 عصر
فقط به یک نکته نیز توجه کنید.
اگر تاریخ سیستم عقب کشیده شده و یا از تاریخ مورد نظر تجاوز ککرد باید یک Flag یک شود تا کاربر با عقب کشیدن تاریخ دوباره از سیستم استفاده نکند.
موفق باشید

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

SYNDROME
سه شنبه 27 آذر 1386, 16:37 عصر
سلام
این را که گفتید نکته جالبی است و مستلزم این است که در یک جدول ذخیره کنم و حتی برای اینکار کدکننده جهت اینکار دارم.
اگر بشود در جایی دیگر چک شود ویا ذخیره گردد خوب است که فعلا چیزی به ذهنم نمی رسد!
بهتر است هم در یک فایل که در کنار برنامه شما است قرار گیرد و هم در جدولتان که اگر کاربر فایل را که قبلاً کپی گرفته است جای فایل فعلی کپی کرد بتوانید تشخیص دهید.
موفق باشید

دلفی زاده
جمعه 30 آذر 1386, 11:29 صبح
از کامپوننت زیر می توانید استفاده کنید من ازش خوب جواب گرفتم

dkhatibi
شنبه 22 تیر 1387, 11:05 صبح
استفاده از فایلها باین شکل مطمئن نیست. نوشتن تاریخ و زمان در انتهای فایل Exe یا یکی از dll های سیستم مطمئن تر ولی سخت تر است.

اصغر (پآچ)
شنبه 22 تیر 1387, 22:17 عصر
سلام دوست من
ببین روش پیشنهادی من استفاده از ریجستری و قرار دادن یه سری متغیر نا مفهوم توی ریجستری که بیاد اونها رو چک کنه اگه هم تاریخ جاری سیستم از آخرین تاریخ ثبت شده کوچکتر باشه کلا مهلت استفاده از برنامه از بین بره این خیلی کارا تره

موفق و موید باشی

ali_abbasi22145
یک شنبه 23 تیر 1387, 09:12 صبح
سلام و تشكر
مشكلم مدتهاست حل شده!