منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : هل تريد ان تحدد عدد مرات عمل لبرنامجك ؟ ادخل هنا !
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلم عليكم ورحمة الله وبركاتة
---------------
بعد إذن إدارة المنتدى
منقول للفائدة
--------------
لاخوة الكرام
كثيراً منا من يجد برامج تعمل لعدد مرات معين ثم يغلق او ما يسمى بيننا بالـ Trial Programs او او البرامج التجريبية فهى وبكل بساطة وبأبسط فكرة ايضاً سنقوم بها معاً
والفكرة وفقنى اليها الله عند سؤال احد الاعضاء لى هذا السؤال من قبل فى احد المنتديات الحبيبة
والان الى الشرح :
1 - قم بأنشاء قاعدة بيانات وليكن اسمها Num .
2 - قم بأنشاء جدول وسمه بأسم TNum .
3 - قم بأنشاء حقل من نوع Number واسمه Numb.
-------------------------------------------------
4 - قم بأنشاء مشروع جديد من Microsoft Visual Basic 6.0 .
5 - قم بأنشاء 1 Form و 1 من اداة Command Button .
6 - نسق شكل الادوات بالشكل الذى تريد وتحب !.
7 - الان الى برمجة الادوات :
- سوف تستخدم اداة الـ Dao 3.6 وذلك لكى تتعامل مع قواعد بيانات بأصدار حديث مثل 2003 مثلاً كما قمنا نحن اذا كنا نستخدم
Ms-Access 2003

- ونقوم بتعريف المكتبة من خلال قائمة Project ومنها الى Refrence ونختا من القائمة Microsoft DAO 3.6 Object Library
والان الى البرمجة :
1 - اذهب الى قسم التصريحات العامة (General) واكتب الكود التالى :
كود :
Dim Db As DataBase
Dim Rs As RecordSet


وفى الكود السابق قمنا بتعريف متغير بصيغة DataBase ليحمل القاعدة داخل البرنامج وايضاً متغير من نوع RecordSet ليحمل الجدول .
2 - اذهب الى الـ Form_Load واكتب الكود التالى :

كود :
Private Sub Form_Load ()
Set Db = OpenDataBase("Num.mdb")
Set Rs = Db.OpenRecordSet ("TNum",2)
End Sub

والكود السابق لتعريف المتغيرات كوحدات اتصال فعلية بالقاعدة التى قمنا بأنشائها مسبقاً وايضا للجدول الذى بها.
3 - اذهب الى حدث الأ Form_Resize وضع الكود التالى :


كود :
Private Sub Form_Resize ()
If Rs.RecordCount = 0 Then Exit Sub
Rs.MoveFirst
If  Val(Rs.Fields!Numb) = 5 Then
MsgBox "Runing Program Has Over" + Val(Rs.Fields!Numb) + " Times",VbExlamation ,"End Program"
End
End If

والكود السابق يعنى اذا كان الحقل مدون به عدد 5 سيقوم بأرسال رسالة تقوم انه انتهت مده عمل البرنامج الخمس ويمكنك ايضاً وضع الكود السابق فى حدث الـ Form_Load بعد تعريفات متغير ات القاعدة .
4 - اذهب الى الحدث Click للـ Command1 واكتب الكود التالى :

كود :
Private Sub Command1_Click ()
Dim X As String
X = MsgBox("Are You Sure To Exit ?", vbQuestion + vbYesNo, "Exit..")
If X = vbNo Then Exit Sub
If Rs.RecordCount > 0 Then
Rs.MoveFirst
Rs.Edit
Rs.Fields!Numb = Val(Rs.Fields!Numb) + 1
Rs.Update
Else
Rs.AddNew
Rs.Fields!Numb = "1"
Rs.Update
End If
End
End Sub

ويعنى الكود السابق انه اذا وجد عدد سجلات الحقل اكبر من صفر اى بها سجل بمعنى اصح فسيقوم البرنامج بجمع رقم واحد على القيمة الحالية له واذا لم يجد سجلات بالقاعدة فى حالة اننا اول مره تقوم بغلق البرنامج فسيقوم بأنشاء سجل جديد ويضع به قيمة 1 .



بالتوفيق للجميع
لكم مني الف شكر وتقدير لك استاذي العزيز والله يحفظكم ويرعاكم
ولك من لكل التقدير اخي الكريم

وعلى كلامك الطيب

بارك الله فيك
مشكور وبارك الله فيك
شكرا اخي الكريم ع مرورك الطيب
بارك الله فيك
السلام عليكم...

الشكر مسبقاً على المحاولة، و لكن ليس هناك برنامج محمي ضد النسخ أو تجاوز الفترة التجريبية. التركيز يجب أن ينصب على تحسين أداء البرنامج و تسهيل استعماله و إعطائه مظهراً بسيطاً و جذاباً.

كذلك فإن الكود يحتوي على خطأ أساسي، و هو الاعتقاد بأن المستخدم سيغلق البرنامج دائماً عن طريق الزر المكتوب فيه كود زيادة العداد! ماذا لو أغلق المستخدم النافذة عن طريق زر الإغلاق (X) الموجود في شريط عنوان النافذة، أو عن طريق ضغط Alt+F4 ؟ - لن يزيد العداد!

إذا أردنا أن نكتب خطوات للقيام بها عند إغلاق النافذة فيجب أن نكتبها في الحدث Unload أو QueryUnload التابعين للنافذة.

سلام.
اخي الكريم بارك الله فيك

وأنت اهل الخيرة


كل ما هناك انها فكرة ليست اكثر

مشكرو اخي الكريم ع مرورك
السلام عليكم
ماذا عن عملية اختراق مثل هذا الكود؟
أقصد ما مدى حماية مثل هذه الطريقة ؟