PDA

View Full Version : تایمر روی برنامه



sahar_ah
سه شنبه 10 آبان 1384, 16:26 عصر
سلام
چطور میشه روی برنامه تایمر گزاشت تا پس از یه مدت معین برنامه پاک بشه یا دیگه اجرا نشه؟

Touska
سه شنبه 10 آبان 1384, 16:37 عصر
می تونید با برنامه تون یک فایل رو چک کنید و سپس برنامه تون اجرا بشه.

و وقتی تایمر به زمان مورد نظر رسید اون فایل رو حذف کنید.

و برنامه دیگه کار نمیکنه.

mzjahromi
سه شنبه 10 آبان 1384, 17:09 عصر
ولی من فکر میکنم اینجوری به راحتی Crack بشه . با Reinstall هم دوباره فعال میشه.
از Registry استفاده کنی سخت تر Crack میشه

sahar_ah
سه شنبه 10 آبان 1384, 17:15 عصر
میشه بیشتر راهنمایی کنید چون من کار با رجیستری رو بلد نیستم
ممنون میشم اگه کامل توضیح بدید
با تشکر

mzjahromi
سه شنبه 10 آبان 1384, 17:28 عصر
ببینید:
شما تو اولین اجرا زمان رو تو Registry مینویسید. هر دفعه که برنامه اجرا میشه اونو چک می کنید. اگه د روز از اون گذشته بود برنامه دیگه اجرا نشه.
حالا یه مشکل اینه که ممکنه ساعت رو عقب بکشن.
برای حل این مشکل میتونی ساعت زمان آخرین اجرا رو هم تو Registry بنویسی . اینطوری هر وقت دیدی زمان عقب رفته اجرا رو متوقف می کنی.
یه برنامه هائی هست که زمان رو برای یه برنامه خاص ثابت نگه میداره
برای جلوگیری از اونا هم باید چک کنی که زمان حتما جلو رفته باشه و ثابت نمونده باشه.

mzjahromi
سه شنبه 10 آبان 1384, 17:31 عصر
برای نوشتن و خواندن در/از رجیستری هم اینجوری عمل کن


var
r:TRegistry;
begin
r:=TRegistry.Create;
r.RootKey:=HKey_Current_User;
if r.OpenKey('Test\test',True) Then
Begin
R.WriteInteger('test',Val);
val:=R.ReadInteger('test');
End;
r.Free;
End;

sahar_ah
سه شنبه 10 آبان 1384, 19:35 عصر
سلام
متشکرم از توجهتون اما از کد ایراد میگیره
من در قسمت Uses عبارت Registry رو هم اضافه کردم اما از عبارت Val ایراد میگیره.اگه میشه کمکم کنید
متشکرم

mzjahromi
سه شنبه 10 آبان 1384, 19:41 عصر
این یه کد نمونه هست
1-تو این کد که val تعریف نشده
2 شما برای زمان نمیتونید از Integer استفاده کنید باید از R.ReadFloat() استفاده کنی چون DateTime از جنس Double هست

sahar_ah
سه شنبه 10 آبان 1384, 20:16 عصر
ببخشیر میشه بیشتر توضیح بدید دقیقا چکار باید بکنم
ببخشید تر خدا من اینقدر زحمتتون میدم

mzjahromi
سه شنبه 10 آبان 1384, 20:27 عصر
خواهش میکنم
wait a minute Please

mzjahromi
سه شنبه 10 آبان 1384, 20:40 عصر
این Function رو بذار تو OnFormCreate فرم اصلی برنامه ات


procedure TForm1.FormCreate(Sender: TObject);
var
R:TRegistry;
FirstRun,LastRun:TDateTime;
Begin
r:=TRegistry.Create;
r.RootKey:=HKey_Current_User;
if r.OpenKey('Test\test',True) Then
Begin
Try
FirstRun:=R.ReadFloat('FirstRun');
Except
FirstRun:=Date+Time;
R.WriteDateTime('FirstRun',FirstRun);
End;
Try
LastRun:=R.ReadFloat('LastRun');
Except
LastRun:=Date+Time-EncodeTime(1,1,1,1);
End;
R.WriteDateTime('LastRun',Date+Time);
if (LastRun>=Date+Time) Or((Round(Date)-Round(FirstRun))>15{Number Of Trial Dates})Then
Application.Terminate;
End;
r.CloseKey;
r.Free;
end;

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

vcldeveloper
چهارشنبه 11 آبان 1384, 02:20 صبح
TmxProtector
http://www.maxcomponents.net/download/mxprotector_1_31.zip