اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر (معدل)

السلام عليكم ورحمة الله وبركاته
على الرغبة السيد @محمد عبد الشفيع من هنا https://www.officena.net/ib/topic/86775-دمج-برنامج-الحماية-مع-برنامج-الفترة-التجريبية تم فتح هذا الموضوع
و ان شاء الله ساشرح خطوة خطوة حسب وقتي حتى اخلص من الموضوع وفي النهاية راح اسمع اراء و مقترحاتكم
والان نحن نحتاج جدول واحد لكي نحفظ فيه تسلسل و رقم هارد و المعالج و رقم التفعيل البرامج و مدة التفعيل و تاريخ التفعيل و تاريخ اخر مرة فتح البرامج
وسنسمي هكذا بالتسلسل كما مبينة في الصورة

1.jpg.effa98f2148a4d00f7f21e077226ed6e.jpg

ID من نوع ترقیم تلقائی 
NumForMoaalic من نوع نصي
NumForHard من نوع نصي
NumTascil من نوع نصي
Midda من نوع رقم و مصدره يكون عمودين واحد لكتابة رقم ايا عدد ايام التفعيل والاخر لكتابة مثلا يوم واحد او اسبوع واحد هكذا
وهذا هو مصدره

"1";"يوم واحد";"7";"اسبوع واحد";"30";"شهر واحد";"90";"ثلاث اشهر";"180";"ستة اشهر";"365";"سنة واحدة";"18250";"مدى الحياة"

شوف الصورة لكي نعرف خصائص هذا الحقل جيداً
2.jpg.d1bc868cb0dc4fbbdee42f9e81a26e4d.jpg
و ايضا عندنا حقل باسم
firstdate من نوع وقت والتاريخ
واخر حقل هو EndDate من نوع وقت والتاريخ 
وتم تسمية الجدول باسم TblTascil

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

 

 

تم تعديل بواسطه Shivan Rekany
  • Like 4
  • Thanks 6
قام بنشر

احب ان اكون اول من يشارك بهالموضوع الشيق استاذنا الجميل @Shivan Rekany وقبل ان اقرا بداية الموضوع منك استاذى احببت ان انقل لك اخر مشاركاتى بالموضوع هناك وكنت قد اقترحت الاتى

  3 ساعات مضت, qathi said:

فكرة رائعة أخي @Barna

وممكن كذلك رقم المعالج .. حتى تكتمل الفكرة

طبعاً معلوم أن الهارد أذا أصابة عطل يتلف .. وهنا يكون أمر مؤرق عند العميل .. كما أنه يمكن نقله من جهاز الى اخر .. وهذا أمر ليس مقلق يظل البرنامج رهين الهارد

لكن المعالج نادر أصابته بعطل يؤدي تلفه .. كما أنه من الصعب نقلة .. وأذا تم نقله فأنهُ يتطلب توافق الماذربورد (لوحة الام) بالمعالج .. وهذا أمر في الغالب لا يفقه العميل بهذا

 

  3 ساعات مضت, kanory said:

السلام عليكم ورحمة الله وبركاته .......

الأن بدأتم في الطريق الصحيح ...... أبدأ ثم أسأل ........................................ تجد الاجابة من الجميع

وعلى بركة الله ....... سوف أشارك حسب ما يتسع به وقتي معكم أحبتي الكرام .

أعتقد أن الموقع يعج بتلك الأفكار ......... بقي علينا الجمع بينها للخروج بأفضل النتائج المطلوبة ( لذا نطلب السماح من اصحاب تلك البرامج الخاصة بالحماية بإقتطاع بعض الأكواد منها لصنع تلك الأداة ..... وشكرا لهم جميعا كل باسمه )

 

  2 ساعات مضت, Shivan Rekany said:

السلام عليكم ورحمة الله وبركاته 
تهنئكم على شجاعتكم @qathi , @Barna , @محمد عبد الشفيع 
کملوا موضوع وانا ان شاء الله قريبا راح افتح موضوع جديد بقاعدة جديدة 
انا بدأت وقريبا راح تجدون الرابط هنا

الاخوة والاساتذة الأعزاء   @qathi , @Barna   شاكر لكم تفاعلكم الثرى والذى احيا الموضوع 

الخبراء والموجهون اساتذتنا @Shivan Rekany , @kanory  دمتم لنا ولكل رواد المنتدى وزائريه عونا وتعليما وابهاراً 

فكرتك اخى @Barna جميلة للغاية ان يكون هناك برنامج يعمل كاداة بها معظم اختيارات الحماية المطلوبة وما على مصمم البرنامج ان يدخل برنامجه داخل هذه الاداة ليتم عمل المطلوب بشكل تلقائى

تماما مثا فكرة برنامج تحويل mdb to exe وبرنامج انشاء مستخدمين وصلاحيتهم بشكل اختيارى وكل هذه البرامج موجودة هنا بالمنتدى الكريم السخى بخبرائه الرائعين 

واقدم لكم طريقة الحماية برقم الهارد والمعالج واللوحة وفى حالة وجود اتنين فقط يتم التفعيل ولموضوع هنا 

والبرنامج تم تحميله من تلك المشاركة

استاذي الكريم

@ابوخليل اعتقد ان المرفق الذي وضعته بالخطأ هو القديم لانه يحتوي على نفس الكود السابق لكن وبعد الاطلاع على كود الأخ شيفان قمت بالتعديل بنجاح والحمد لله بفضله ومن ثم فضلكم علينا استطعنا الوصول الى الحل النهائي فبارك الله فيك وبأخي شيفات وهذا هو التكامل الفعلي بين المواضيع حيث التناغم بين الاكواد والافكار .. الآن اصبح الحل 100% :wavetowel:

 

تحياتي

الهارد والمعالج واللوحة الأم4.zip

تم تعديل March 28, 2017 بواسطه sandanet

 

وهناك فكرة اخرى لا تعتمد على تاريخ الجهاز ولكن ممكن ان نعتمد على عدد مرات فتح البرنامج وبعد ععد مرات معين يحدد بالوحدة النمطية يتم طلب تفعيل البرنامج من جديد على ان يتم تحذير المستخدم قبل انتهاء عدد المرات بخمس مرات مثلا باصدار رسالة تحذيرية انه باقى خمس مرات ويكون مطلوب التفعيل من جديد 

وايضا ان يكون التفعيل مقترن بتاريخ اليوم حتى لا يستخدم العميل كود التفعيل نفسه كل مرة ينتهى وقت تفعيل البرنامج وبالمثل فى حماية البرنامج من الاستخدام بجهاز اخر ايضا نريد ان يكون كود اتلتفعيل مقترن بتاريخ اليوم بالاداة حتى لا يتم حفظ اكواد التفعيل واستخدامها مرة اخرى اى ان تكون اكواد التفعيل مختلفة كل مرة عن التى قبلها سواؤ فى عدم نقل البرنامج لجهاز اخر او فى المدة التجريبية للبرنامج سواء المحددة طبقا لتاريخ معين او المحددة بعدد مرات فتح البرنامج

وهناك فكرة اخرى لا تعتمد على تاريخ الجهاز ولكن ممكن ان نعتمد على عدد مرات فتح البرنامج وبعد ععد مرات معين يحدد بالوحدة النمطية يتم طلب تفعيل البرنامج من جديد على ان يتم تحذير المستخدم قبل انتهاء عدد المرات بخمس مرات مثلا باصدار رسالة تحذيرية انه باقى خمس مرات ويكون مطلوب التفعيل من جديد 

وايضا ان يكون التفعيل مقترن بتاريخ اليوم حتى لا يستخدم العميل كود التفعيل نفسه كل مرة ينتهى وقت تفعيل البرنامج وبالمثل فى حماية البرنامج من الاستخدام بجهاز اخر ايضا نريد ان يكون كود اتلتفعيل مقترن بتاريخ اليوم بالاداة حتى لا يتم حفظ اكواد التفعيل واستخدامها مرة اخرى اى ان تكون اكواد التفعيل مختلفة كل مرة عن التى قبلها سواؤ فى عدم نقل البرنامج لجهاز اخر او فى المدة التجريبية للبرنامج سواء المحددة طبقا لتاريخ معين او المحددة بعدد مرات فتح البرنامج

قام بنشر
1 دقيقه مضت, محمد عبد الشفيع said:

وأرجو ان يكون هناك امكانية انتهاء الفترة التجريبية بعد عدد مرات معين لفتح البرنامج نقوم بتحدديه 

هذا ما أفكر به تماما .... وهو تحديد الفترة بعدد معين من الايام ويتوقف البرنامج لطلب تفعيل مرة أخرى.....

قام بنشر
28 دقائق مضت, Barna said:

هذا ما أفكر به تماما .... وهو تحديد الفترة بعدد معين من الايام ويتوقف البرنامج لطلب تفعيل مرة أخرى.....

اخى لا اقصد عدد معين من الايام 

اقصد مثلا انه بعد ان يتم فتح البرنامج 100 مرة بعدها يطلب التفعيل من جديد وهى فكرة لا تعتمد على التاريخ حتى نغلق موضوع التلاعب بالتاريخ 

قام بنشر
منذ ساعه, Shivan Rekany said:

غدا او يوم السبت ان شاء الله راح اكمل الشرح ونبدأ بعمل النماذج

جميل أستاذ @Shivan Rekany هذا الذي كنا نتظرة من زمان ..

ثق أننا ننتظر منك البقية بتلهف كبير جداً .. 

4 دقائق مضت, محمد عبد الشفيع said:

حتى نغلق موضوع التلاعب بالتاريخ

كلامك صحيح أخي @محمد عبد الشفيع

قام بنشر

مميزات هذا الموضوع :-
- بيعمل كود التفعيل بواسطة رقم هارد و المعالج 
- هناك مدة التجريبية اي تفعي لمدة مثلا لليوم واحد او للاسبو او للشهر او ثلاث اشهر او نصف سنة او سنة كاملة او مدى الحياة وتقدر ان تظيفه مثلا ثلاث سنوات او اكثر حسب رغبة

- عند تغيير في التاريخ الجهاز ينبهك بان تم تلاعب بالتاريخ الجهاز
 

 

  • Thanks 1
قام بنشر
7 ساعات مضت, Shivan Rekany said:

مميزات هذا الموضوع :-
- بيعمل كود التفعيل بواسطة رقم هارد و المعالج 
- هناك مدة التجريبية اي تفعي لمدة مثلا لليوم واحد او للاسبو او للشهر او ثلاث اشهر او نصف سنة او سنة كاملة او مدى الحياة وتقدر ان تظيفه مثلا ثلاث سنوات او اكثر حسب رغبة

- عند تغيير في التاريخ الجهاز ينبهك بان تم تلاعب بالتاريخ الجهاز
 

 

رائع الاستاذ والمعلم @Shivan Rekany ولى بعض الاستفسارات

1- هل يمكن ان تضيف رقم اللوحة الى رقم الهارد ورقم المعالج لتكون الحماية ثلاثية

2- هل ممكن ان تكون الفترة التجريبية باختيارين اما بعدد الايام او ان تكون بعدد مرات فتح البرنامج 

3- نريد ان يكون اكواد التفعيل لكل الطرق مقترنة بتاريخ اليوم لكى لا يتم استخدام نفس الاكواد كل مرة يطلب فيها البرنامج التفعيل 

اى انه مثلا يتم اخذ تاريخ اليوم ويتم تحويله الى رقم نصى ويتم جمعه على كود التفعيل ليكون الكود مختلف فى كل مرة يتم طلبه

  • Like 1
قام بنشر
8 ساعات مضت, محمد عبد الشفيع said:

1- هل يمكن ان تضيف رقم اللوحة الى رقم الهارد ورقم المعالج لتكون الحماية ثلاثية

2- هل ممكن ان تكون الفترة التجريبية باختيارين اما بعدد الايام او ان تكون بعدد مرات فتح البرنامج

 أستاذ @Shivan Rekany أؤيد كلام أخي  @محمد عبد الشفيع

في النقطتين 1 و 2

أما بالنسبة للطريقة رقم 3

8 ساعات مضت, محمد عبد الشفيع said:

ويتم جمعه على كود التفعيل ليكون الكود مختلف فى كل مرة يتم طلبه

أسمح لي أخي محمد وحتى نستفيد .. حسب ما فهمت من كلامك

لا أعرف ما المغزى بربط كل طرق الحماية بتاريخ اليوم .. .. الذي أعرفة أن ما طلبت هو نفس الطريقة الذي تقوم به حماية الهارد والمعالج .. ولا يحتاج ربط تاريخ اليوم

والأمر راجع للأستاذ  @Shivan Rekany  أذا كان يفيدنا بهذا الأمر

قام بنشر (معدل)
2 ساعات مضت, qathi said:

 أستاذ @Shivan Rekany أؤيد كلام أخي  @محمد عبد الشفيع

في النقطتين 1 و 2

أما بالنسبة للطريقة رقم 3

أسمح لي أخي محمد وحتى نستفيد .. حسب ما فهمت من كلامك

لا أعرف ما المغزى بربط كل طرق الحماية بتاريخ اليوم .. .. الذي أعرفة أن ما طلبت هو نفس الطريقة الذي تقوم به حماية الهارد والمعالج .. ولا يحتاج ربط تاريخ اليوم

والأمر راجع للأستاذ  @Shivan Rekany  أذا كان يفيدنا بهذا الأمر

عزيزى واخى واستاذى @qathi بالنسبة للنقطة الثالثة اوضح لك قصدى والمغزى منها

ان البرنامج بعد انتهاء الفترة المحددة له للعمل سيطلب التفعيل من جديد وبعد ان يتم اخذ رقم النسخة ووضعها فى برنامج الكراك ليعطينا كود للتفعيل لاعطائه للعميل 

وبعد ان تنتهى المدة المحددة لتانى مرة ويطلب التفعيل اليس وقتها من الممكن ان يقوم العميل بالتفعيل بنفس الكود المعطى له من قبل لان رقم النسخة لن يتغير عما اخذناه منه من قبل وبالتالى لم يتغير كود التفعيل لاننا اعطيناه نفس المعطيات وبالتالى سينتج لنا نفس النتائج 

لذلك اردت انه فى برنامج الكراك بعد ان تتم المعادلة بالشكل المعتاد يكون هناك اصافة لتاريخ اليوم ويتم تحويله الى رقم طويل (مثل الاكسل عندما تكتب تاريخ وتكون الخلية تنسيقها نص فينتج بدل التاريخ رقم طويل ) ويتم اضافة هذا الرقم الناتج الى كود التفعيل سوا بالجمع او بالطرح او بالضرب ووقتها كل مرة ينتهى فيها البرنامج وبطلب كود التفعيل سينتج عن تلك الطريقة كود مختلف كل مرة وذلك بسبب تغيير التاريخ

وطبعا تلك الاضافة سنكون فى اكواد البرنامج المحمى وايضا ببرنامج او اداة الكراك

اتمنى ان اكون قدرت ان اوضح وجهى نظرى

وبالطبع استاذنا وخبيرنا @Shivan Rekany هو الاقدر والادرى بالافضل والاصلح بالطريقة التى يضمن ان يكون كود التفعيل مختلف كل مرة عن التى قبلها حتى لو كان التفعيل على نفس الجهاز الذى عليه البرنامج ودون تغيير اى من الملحقات التى تضمن عدم نقل البرنامج لجهاز اخر

ارجو منك عزيزى ان تقول رايك فى ما قصدت

تم تعديل بواسطه محمد عبد الشفيع
قام بنشر
11 دقائق مضت, محمد عبد الشفيع said:

ان البرنامج بعد انتهاء الفترة المحددة له للعمل سيطلب التفعيل من جديد وبعد ان يتم اخذ رقم النسخة ووضعها فى برنامج الكراك ليعطينا كود للتفعيل لاعطائه للعميل 

وبعد ان تنتهى المدة المحددة لتانى مرة ويطلب التفعيل اليس وقتها من الممكن ان يقوم العميل بالتفعيل بنفس الكود المعطى له من قبل لان رقم النسخة لن يتغير عما اخذناه منه من قبل وبالتالى لم يتغير كود التفعيل لاننا اعطيناه نفس المعطيات وبالتالى سينتج لنا نفس النتائج 

لذلك اردت انه فى برنامج الكراك بعد ان تتم المعادلة بالشكل المعتاد يكون هناك اصافة لتاريخ اليوم ويتم تحويله الى رقم طويل (مثل الاكسل عندما تكتب تاريخ وتكون الخلية تنسيقها نص فينتج بدل التاريخ رقم طويل ) ويتم اضافة هذا الرقم الناتج الى كود التفعيل سوا بالجمع او بالطرح او بالضرب ووقتها كل مرة ينتهى فيها البرنامج وبطلب كود التفعيل سينتج عن تلك الطريقة كود مختلف كل مرة وذلك بسبب تغيير التاريخ

وطبعا تلك الاضافة سنكون فى اكواد البرنامج المحمى وايضا ببرنامج او اداة الكراك

اتمنى ان اكون قدرت ان اوضح وجهى نظرى

كلامك صيحيح أخي @محمد عبد الشفيع  أذاً هذا يخص بدمج الفترة التجربية للبرنامج .. أضف أليها ماتم طلبه .. عدد المرات الدخول للبرنامج

الكلام سيكون له تشعباته لكن ننتظر رجوع الاستاذ @Shivan Rekany يوم السبت ونرى حديثه في هذا الأمر .. 

قام بنشر (معدل)
24 دقائق مضت, qathi said:

كلامك صيحيح أخي @محمد عبد الشفيع  أذاً هذا يخص بدمج الفترة التجربية للبرنامج .. أضف أليها ماتم طلبه .. عدد المرات الدخول للبرنامج

الكلام سيكون له تشعباته لكن ننتظر رجوع الاستاذ @Shivan Rekany يوم السبت ونرى حديثه في هذا الأمر .. 

نعم اخى @qathi الموضوع سيتشعب ولا احب ان نزعج خبيرنا @Shivan Rekany ونضايقه بكثرة الطلبات لذا احب ان نعرض سريعا كل ما براسنا حتى يتسنى له فعل الاصلح 

وكما قلت سواء كانت الحماية للفترة التجريبية بالتاريخ او عدد مرات فتح البرنامج فمطلوب هذه النقطة ليكون التفعيل مختلف كل مرة تنتهى المدة ويطلب التفعيل 

ونحب ان تكون حماية الفترة التجريبية متوفرة بالطريقتين بتاريخ معين تنتهى فيه مدة البرنامج 

وايضا عدد مرات فتح البرنامج ويختار منهم كل منا ما يحب ويفضل حسب المطلوب

ومثلما عرض اخونا @Barna نموذج للاداة بها اختيارات للحماية فتكون الطريقتين متواجدين ضمن الاختيارات ويختار كل واحد ما يشاء منهم 

وبالطبع هذا امر ليس هين ومتشعب ويحتاج اكواد كثيرة 

ولكن خبيرنا @Shivan Rekany لها باذن الله 

فقط نحتاج ان يتسع صدره لنا وان يكون مرتاح البال كى ينتج للمنتدى افضل اداة للحماية 

تم تعديل بواسطه محمد عبد الشفيع
  • Like 1
قام بنشر

النماذج :

في قاعدة بيانات للعميل :

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

1.jpg.1b899cf9e94ea4a05130d0bc2c171d0b.jpg

في النموذج الاول نحتاج لزرين واحد للتحقيق التسجيل والثاني لاغلاق القاعدة البيانات
ونحتاج ايضا ل كومبوبوكس واحد و ثلاث مربعات النصية
وخالي من المصدر
و 
والمهم هنا هو خصائص كومبوبوكس شوف الصور لخصائصه

2.jpg.26b9f4af651975e8c04afaf459418e29.jpg
قمنا بعمل كومبوبوكس وبيكون لها عمودين
وعطينا لكل عمود حجمه 
العمود الاول عطينا صفر لكي يختفى
والعمود الثاني عطيناه 3 سنتيمتر

3.jpg.8ba32264f29f269d6af30dd1334e3b51.jpg

وغيرنا نوع مصدر الصف الى فاليو ليست 
وكتبنا لمصدر الصف الكومبوبوكس نفس المصدر في حقل Midda فی جدول

في ٨‏/١١‏/٢٠١٨ at 19:49, Shivan Rekany said:

Midda من نوع رقم و مصدره يكون عمودين واحد لكتابة رقم ايا عدد ايام التفعيل والاخر لكتابة مثلا يوم واحد او اسبوع واحد هكذا
وهذا هو مصدره

"1";"يوم واحد";"7";"اسبوع واحد";"30";"شهر واحد";"90";"ثلاث اشهر";"180";"ستة اشهر";"365";"سنة واحدة";"18250";"مدى الحياة"

وتم منع ادخال شيء اخر عدى اللي مكتوبة في مصدر الصف لكومبوبوكس

  • Thanks 2
قام بنشر
36 دقائق مضت, Shivan Rekany said:

النماذج :

في قاعدة بيانات للعميل :

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

1.jpg.1b899cf9e94ea4a05130d0bc2c171d0b.jpg

في النموذج الاول نحتاج لزرين واحد للتحقيق التسجيل والثاني لاغلاق القاعدة البيانات
ونحتاج ايضا ل كومبوبوكس واحد و ثلاث مربعات النصية
وخالي من المصدر
و 
والمهم هنا هو خصائص كومبوبوكس شوف الصور لخصائصه

2.jpg.26b9f4af651975e8c04afaf459418e29.jpg
قمنا بعمل كومبوبوكس وبيكون لها عمودين
وعطينا لكل عمود حجمه 
العمود الاول عطينا صفر لكي يختفى
والعمود الثاني عطيناه 3 سنتيمتر

3.jpg.8ba32264f29f269d6af30dd1334e3b51.jpg

وغيرنا نوع مصدر الصف الى فاليو ليست 
وكتبنا لمصدر الصف الكومبوبوكس نفس المصدر في حقل Midda فی جدول

وتم منع ادخال شيء اخر عدى اللي مكتوبة في مصدر الصف لكومبوبوكس

معك خطوة بخطوة استاذانا @Shivan Rekany  حتى تنتهى 

اعتقد انك لن تلتفت الى استفسارتنا حتى تنتهى اولاً من شرحك 

قام بنشر

استاذ @Shivan Rekany لى ملاحظة على كومبو بوكس مدة التفعيل 

وهو ان المستخدم هو من سيحدد المدة وبالتالى سيختار تفعيل مدى الحياة

والمطلوب ان يكون الاختيار بيد المبرمج فقط

  • Like 1
قام بنشر

أخي @محمد عبد الشفيع بالفعل يجب أن يكون تحديد الفترة من المبرمج وليس المستخدم

أستاذ @Shivan Rekany

أرى أنهُ تبدل بأضافه رسالة عند المستخدم بعد التفعيل تخبرة بالفترة .. مثال: " تم تفعيل البرنامج لمدة .... "

قام بنشر
2 ساعات مضت, qathi said:

أخي @محمد عبد الشفيع بالفعل يجب أن يكون تحديد الفترة من المبرمج وليس المستخدم

أستاذ @Shivan Rekany

أرى أنهُ تبدل بأضافه رسالة عند المستخدم بعد التفعيل تخبرة بالفترة .. مثال: " تم تفعيل البرنامج لمدة .... "

اخى @qathi الافضل عدم اخباره بالفترة يكفى ان تقول له اذا احببت

نرجو من استاذنا @Shivan Rekany ان ينظر لاستفسارتنا واراءانا بعين الاعتبار وهى يقوم بالعمل 

خصوصا اننا طلبنا اضافة رقم اللوحة الى رقم الهارد ورقم المعالج

فارجو ان يتم الامر من البداية حتى لا يتم التعديل فيما بعد

قام بنشر

السلام عليكم ورحمة الله وبركاته
راح ارد على بعض الردود واولا

في ٨‏/١١‏/٢٠١٨ at 20:23, محمد عبد الشفيع said:

وأرجو ان يكون هناك امكانية انتهاء الفترة التجريبية بعد عدد مرات معين لفتح البرنامج نقوم بتحدديه

انا ما حبيت هذه الطريقة ولا اشوف ان هذا بيكون طريقة علمية !!
نفترض انا مستخدم وعندي برامج تجريبي واذار فتحت اكثر من 10 مرات راح يقفل 
هناك احتمال ان تغلق الجهاز في اليوم مرتين او اكثر ... او هناك احتمال ان لا نغلق الجهاز لمدة طويل اي لكم يوم 
او هناك 2 من المستخدمين الجهاز والاخر لا يعرف ما هو بالضبط بيفتحه و بيغلقه هذا سينقص عدد مرات والا هذا اسهل من الفترة التجريبية لعدد ايام المحدودة

في ٨‏/١١‏/٢٠١٨ at 20:27, Barna said:

هذا ما أفكر به تماما .... وهو تحديد الفترة بعدد معين من الايام ويتوقف البرنامج لطلب تفعيل مرة أخرى

هذا موجودة ان شاء الله

في ٨‏/١١‏/٢٠١٨ at 20:56, محمد عبد الشفيع said:

اخى لا اقصد عدد معين من الايام 

اقصد مثلا انه بعد ان يتم فتح البرنامج 100 مرة بعدها يطلب التفعيل من جديد وهى فكرة لا تعتمد على التاريخ حتى نغلق موضوع التلاعب بالتاريخ 

كما قلت مسبقا لا احب هذه الطريقة

في ٩‏/١١‏/٢٠١٨ at 07:09, محمد عبد الشفيع said:

1- هل يمكن ان تضيف رقم اللوحة الى رقم الهارد ورقم المعالج لتكون الحماية ثلاثية

في ١٢‏/١١‏/٢٠١٨ at 00:16, محمد عبد الشفيع said:

خصوصا اننا طلبنا اضافة رقم اللوحة الى رقم الهارد ورقم المعالج

فارجو ان يتم الامر من البداية حتى لا يتم التعديل فيما بعد

اولا  لان اللوحة الام لا يظهر لبعض الاجهزة 
اليك هذا
https://www.officena.net/ib/topic/76477-معرفة-سيريال-الهارد-الحقيقي-والمعلج-واللوحة-الأم/?do=findComment&comment=491182

ثانيا اليك هذا
https://www.officena.net/ib/topic/67762-استخراج-رمز-المعالج-والماذر-بورد-ورقم-الهارد-ديسك-للحماية/?do=findComment&comment=440567
لذلك انا ابتعد عنه

في ٩‏/١١‏/٢٠١٨ at 07:09, محمد عبد الشفيع said:

2- هل ممكن ان تكون الفترة التجريبية باختيارين اما بعدد الايام او ان تكون بعدد مرات فتح البرنامج

نعم يمكن لكن هذا الموضوع معنونة كشرح ... وانا استخدمت جدول فيه لكي يسهل على الجميع لكي يفهم خطواته ... واذا تريدون ذلك فقط تقدر تضيف حقل اخر في جدول وعند فتح القاعدة يعمل تحديث الحقل ويضيفه رقم واحد على الرقم المكتوبة
وفي محرر الاكواد تكتبون شرط ايف اذا الرقم الموجودة بيكون اكبر او يساوي هذا الرقم اغلق القاعدة
 

في ٩‏/١١‏/٢٠١٨ at 07:09, محمد عبد الشفيع said:

3- نريد ان يكون اكواد التفعيل لكل الطرق مقترنة بتاريخ اليوم لكى لا يتم استخدام نفس الاكواد كل مرة يطلب فيها البرنامج التفعيل 

اى انه مثلا يتم اخذ تاريخ اليوم ويتم تحويله الى رقم نصى ويتم جمعه على كود التفعيل ليكون الكود مختلف فى كل مرة يتم طلبه

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

في ١٠‏/١١‏/٢٠١٨ at 21:41, محمد عبد الشفيع said:

استاذ @Shivan Rekany لى ملاحظة على كومبو بوكس مدة التفعيل 

وهو ان المستخدم هو من سيحدد المدة وبالتالى سيختار تفعيل مدى الحياة

والمطلوب ان يكون الاختيار بيد المبرمج فقط

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

في ١٢‏/١١‏/٢٠١٨ at 00:16, محمد عبد الشفيع said:

نرجو من استاذنا @Shivan Rekany ان ينظر لاستفسارتنا واراءانا بعين الاعتبار وهى يقوم بالعمل 

منذ البداية انا اقرأ ملاحظاتكم لكن لم ارد عليكم لاني كان مشغول

  • Thanks 1
قام بنشر
25 دقائق مضت, Shivan Rekany said:

السلام عليكم ورحمة الله وبركاته
راح ارد على بعض الردود واولا

انا ما حبيت هذه الطريقة ولا اشوف ان هذا بيكون طريقة علمية !!
نفترض انا مستخدم وعندي برامج تجريبي واذار فتحت اكثر من 10 مرات راح يقفل 
هناك احتمال ان تغلق الجهاز في اليوم مرتين او اكثر ... او هناك احتمال ان لا نغلق الجهاز لمدة طويل اي لكم يوم 
او هناك 2 من المستخدمين الجهاز والاخر لا يعرف ما هو بالضبط بيفتحه و بيغلقه هذا سينقص عدد مرات والا هذا اسهل من الفترة التجريبية لعدد ايام المحدودة

هذا موجودة ان شاء الله

كما قلت مسبقا لا احب هذه الطريقة

اولا  لان اللوحة الام لا يظهر لبعض الاجهزة 
اليك هذا
https://www.officena.net/ib/topic/76477-معرفة-سيريال-الهارد-الحقيقي-والمعلج-واللوحة-الأم/?do=findComment&comment=491182

ثانيا اليك هذا
https://www.officena.net/ib/topic/67762-استخراج-رمز-المعالج-والماذر-بورد-ورقم-الهارد-ديسك-للحماية/?do=findComment&comment=440567
لذلك انا ابتعد عنه

نعم يمكن لكن هذا الموضوع معنونة كشرح ... وانا استخدمت جدول فيه لكي يسهل على الجميع لكي يفهم خطواته ... واذا تريدون ذلك فقط تقدر تضيف حقل اخر في جدول وعند فتح القاعدة يعمل تحديث الحقل ويضيفه رقم واحد على الرقم المكتوبة
وفي محرر الاكواد تكتبون شرط ايف اذا الرقم الموجودة بيكون اكبر او يساوي هذا الرقم اغلق القاعدة
 

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

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

منذ البداية انا اقرأ ملاحظاتكم لكن لم ارد عليكم لاني كان مشغول

كان الله فى عونك استاذنا الكريم @Shivan Rekany ونستسمحك وارجو ان تعذرنا على كثرة طلباتنا والاثقال على شخصك الكريم وانما هو عشم الاخوة فيك وفى عطائك الغير محدود

ولى استفسار هل سترفق لنا القاعدة بعد اتمامها لتكون مرجع لنا ومن ثم يفتح بعدها نقاش لبعض التعديلات المطلوبة ولو حتى بموضوع منفصل وتكون البداية من تلك القاعدة التى ستنشئها 

قام بنشر
في ١٢‏/١١‏/٢٠١٨ at 11:55, محمد عبد الشفيع said:

ولى استفسار هل سترفق لنا القاعدة بعد اتمامها لتكون مرجع لنا ومن ثم يفتح بعدها نقاش لبعض التعديلات المطلوبة ولو حتى بموضوع منفصل وتكون البداية من تلك القاعدة التى ستنشئها

نحن نعمل هذا من اجل ذلك

  • Thanks 1
قام بنشر (معدل)
14 دقائق مضت, Shivan Rekany said:

نحن نعمل هذا من اجل ذلك

نشكرك على سعة صدرك 

ولى سؤال هل ستستخدم اكواد الهارد والمعالج الثابتة التى لا تتغير ام التى تتغير

لانى فتحت المواضيع التى اشرت اليها وكان من ضمن الردود هذا الرد بالمرفقات الصورة

وايضا هل كود الهارد يستخرج رقم الهارد ام رقم البارتيشن 

 

Screenshot_٢٠١٨١١١٢-١١٠٥٤٠.png

تم تعديل بواسطه محمد عبد الشفيع
قام بنشر

استاذى وعزيزى @Shivan Rekany 

فتحت هذا الموضوع 

ووجدت هذا البرنامج بالمرفقات فهل هو ينفع فى ما تقوم بعمله وايضا وجدت احد الردود عليه فهل هو لا يشتغل على اوفيس ٢٠١٠ فما فوق 

Screenshot_٢٠١٨١١١٢-١١٣٣٠٠.png

SystemInfo.rar

  • أفضل إجابة
قام بنشر

الاكواد المستخدمة :-
نحن استخدمنا هذه الوحدة النمطية بها اربع فانكشن

 

Option Compare Database

Public Function NumMoaalic() ' لاستخراج سريال المعالج
' Microsoft WMI Scripting v2.1 library ستحتاج مكتبة
    Dim varObjectToId As String
    Dim varSerial As String
        On Error Resume Next
            varObjectToId = "Win32_Processor,ProcessorId"
                Set SWbemSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf(Split(varObjectToId, ",")(0))
                    varSerial = ""
        For Each SWbemObj In SWbemSet
                varSerial = SWbemObj.Properties_(Split(varObjectToId, ",")(1))
                varSerial = Trim(varSerial)
            If Len(varSerial) < 1 Then varSerial = "Unknown value"
        Next
             NumMoaalic = varSerial
End Function

Public Function NumHard() ' لاستخراج سريال ھارد
' Microsoft WMI Scripting v2.1 library ستحتاج مكتبة
    Dim varObjectToId As String
    Dim varSerial As String
        On Error Resume Next
            varObjectToId = "Win32_OperatingSystem,SerialNumber"
                Set SWbemSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf(Split(varObjectToId, ",")(0))
                    varSerial = ""
        For Each SWbemObj In SWbemSet
                varSerial = SWbemObj.Properties_(Split(varObjectToId, ",")(1))
                varSerial = Trim(varSerial)
            If Len(varSerial) < 1 Then varSerial = "Unknown value"
        Next
             NumHard = varSerial
End Function

 Function TxtToNumber(ByVal C As String) As String ' مساعد لتحويل الحروف والرموز الى الارقام
 ' حسب ما تريدون تقدرون ان تغير الارقام والحروف حسب رغبتكم
   Select Case C
     Case "A", "J", "R": TxtToNumber = 9
     Case "B", "K", "S": TxtToNumber = 1
     Case "C", "L", "T": TxtToNumber = 7
     Case "D", "M", "U": TxtToNumber = 3
     Case "E", "N", "V": TxtToNumber = 5
     Case "F", "O", "W": TxtToNumber = 8
     Case "G", "P", "X": TxtToNumber = 2
     Case "H", "Y": TxtToNumber = 6
     Case "I", "Q", "Z": TxtToNumber = 4
     Case "-", "_", "\", " ", "/", ";", ":": TxtToNumber = ""
     Case Else
       TxtToNumber = C
   End Select
 End Function

Function TxtInTextToNumber(SText) ' لتغيير الحروف والرموز الى الارقام
Dim Numbers
   Dim I As Integer
' سيبحث عن الكل الحروف و الرموز وسيغير حسب فانكشن الاعلى
    For I = 1 To Len(SText)
        If IsNumeric(Mid(SText, I, 1)) Then
            Numbers = Numbers & Mid(SText, I, 1)
            Else
            Numbers = Numbers & TxtToNumber(Mid(SText, I, 1))
        End If
    Next
    TxtInTextToNumber = Trim(Numbers)
End Function

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

Option Compare Database
    ' تم اعداد من قبل
    ' Shivan Rekany شفان ريکاني
    ' وليس لدينا مانع استخدامه في برامجكم فقط نريد منكم الدعاء
    
    Dim WqtTascil As Long ' متغير لتعرف عن الوقت التسجيل

Private Sub Form_Load() '  كود عند تحميل النموذج
'On Error Resume Next
    Dim NumBeforeTascil, NumForTascil ' متغيران واحد لکي نعرف رقم الاول للتسجيل قبل استخدام الوقت والاخر رقم تسجيل الحقيقي
    Dim Spl() As String, LookAllMNT As String ' متغيران الثاني لكي نعرف كل معلومات في الجدول اذا تم تسجيل البرامج من قبل والاخر للتجزئة المعلومات
    Dim LookMyNm, LookMyNh, LookMyNTascil ' مساعد تجزئة المعومات
    Dim FrqDate As Integer ' متغير نستخدم لفرق بين تاريخ التسجيل و الدخول
    Dim FDate As Date, EDate As Date ' متغيران واحد للتاريخ التسجيل والثاني لاخر مرة لفتح البرامج
        ' رقم قبل تسجيل يساوي رقم واحد مع تحول سريال المعالج الى الارقام مع تحويل سريال الارد تقسيم واحد مع تحويل سريال الهارد
        NumBeforeTascil = Trim(Round(((1 & TxtInTextToNumber(NumMoaalic) & TxtInTextToNumber(NumHard)) / (1 & TxtInTextToNumber(NumHard)))))
        ' جميع المعلومات يساوي جلب بيانات الحقل سريال المعالج و الهارد ورقم التسجيل و مدة التسجيل و تاريخ التسجيل و تاريخ اخر مرة الدخول في جدول تبل التسجيل
        ' بشرط ان يكون سريال المعالج والهارد في جدول بيكون يساوي مع سريال المعالج والهارد اللي يخررجه الفانكشن
        LookAllMNT = Nz(DLookup("[NumForMoaalic] & ""|"" & [NumForHard] & ""|"" & [NumTascil] & ""|"" & [midda] & ""|"" &[firstdate] & ""|"" & [EndDate] ", "TblTascil", _
                                                                                                                                                            "[NumForHard]='" & NumHard & "'" & "and [NumForMoaalic]='" & NumMoaalic & "'"), "")
If LookAllMNT <> "" Then ' اذا يجد المعلوماتولم يكون فارغة

    Spl = Split(LookAllMNT, "|") ' قم بتجزئة كل المعلوةمات حسب رمز هذا الرمز |
       ' الان عطينا لكل متغير جزئه حسب ما جلبنا في الجدول
        LookMyNm = Spl(0): LookMyNh = Spl(1): LookMyNTascil = Spl(2): Me.Midde = Spl(3): FDate = Spl(4): EDate = Spl(5)
        ' فرق بين تاريخين تاريخ الان مع اضافة مدة التفعيل مع اخر تاريخ الدخول
        FrqDate = DateDiff("d", Now, DateAdd("d", Me.Midde, FDate))
        
    If Me.Midde.Column(0) = 1 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 1
        WqtTascil = Format(FDate, "yyyymmdd") ' وقت التسجيل بيكون هذا النوع
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل * 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil)) * 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 7 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 1
        WqtTascil = Format(FDate, "yyyymmdd") + 3 ' وقت التسجيل يساوي سنة و شهر و يوم زائد 3
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 3 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 3) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 30 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 30
        WqtTascil = Format(FDate, "yyyymmdd") + 15 ' وقت التسجيل يساوي سنة و شهر و يوم زائد 15
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 15 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 15) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 90 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 90
        WqtTascil = Format(FDate, "yyyymm") + 45 ' وقت التسجيل يساوي سنة و شهر  زائد 45
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 45 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 45) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 180 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 180
        WqtTascil = Format(FDate, "yyyymm") + 90 ' وقت التسجيل يساوي سنة و شهر  زائد 90
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 90 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 90) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 365 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 365
        WqtTascil = Format(FDate, "yyyymm") + 182 ' وقت التسجيل يساوي سنة و شهر  زائد 182
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 182 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 182) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 18250 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 18250
        WqtTascil = Format(FDate, "yyyymm") + 9125 ' وقت التسجيل يساوي سنة و شهر  زائد 9125
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 9125 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 9125) / 212, ".", ""), 1, 15)
    End If
End If
' اذا احد من رقم التسجيل في جدول او سريال الهارد او المعالج بيكون مخالف مع رقم التسجيل او سريال المعالج او الهارد الجهاز
        If LookMyNTascil <> NumForTascil Or LookMyNm <> NumMoaalic Or LookMyNh <> NumHard Then
                Me.LblTxt.Caption = "يجب عليك ان تعمل تسجيل البرامج اولا ... للتسجيل اتصل بالمبرمج "
                Me.NM = NumMoaalic ' مربع في النموذج اللي باسم نون ميم بيكون يساوي سريال المعالج
                Me.NH = NumHard ' مربع في النموذج اللي باسم نون ئيج بيكون يساوي سريال الهارد
            ElseIf FDate > Now Or EDate > Now Then ' اذا اول تاريخ بيكون اكبر من الوقت الحاضر او تاريخ اخر مرة للدخول اكبر من الوقت الحاضر
                MsgBox "تم تلاعب بتاريخ الجهاز ... وهذا غير مقبول , سيتم اغلاق البرامج"
                DoCmd.Quit ' اغلاق القاعدة
            ElseIf FrqDate <= 15 And FrqDate > 0 Then ' اذا فرق بين تاريخين  يساوي او اقل من 15 يوم و فرق بين تاريخين اكبر من رقم صفر
             ' بيظهر الرسالة وبيظهر باقي عدد ايام المتبقية لتفعيل البرامج ويسأل هل يريد تسجيله من جديد اذا يختار نعم
                If MsgBox("باقي عندك " & "( " & FrqDate & " )" & " يوم لانتهاء فترة التسجيل , هل تريد ان تعمل تسجيل من جديد ؟ ", vbMsgBoxRtlReading + vbYesNo + vbQuestion + vbMsgBoxRight, "تسجيل البرامج") = vbYes Then
                    Me.LblTxt.Caption = "يجب عليك ان تعمل تسجيل البرامج اولا ... للتسجيل اتصل بالمبرمج "
                    Me.NM = NumMoaalic ' مربع في النموذج اللي باسم نون ميم بيكون يساوي سريال المعالج
                    Me.NH = NumHard ' مربع في النموذج اللي باسم نون ئيج بيكون يساوي سريال الهارد
                Else ' والا
                    DoCmd.OpenForm "frmsereki", acNormal ' فتح نموذج اخر
                    DoCmd.Close acForm, Me.Name ' اغلاق هذا النموذج
                End If
            ElseIf FrqDate <= 0 Then ' اذا صفر بيكون اكبر او يساوي فرق بين تاريخين
              ' يظهر الرسالة ويخبره بان تم انتهاء مدة التفعيل والسؤال عن تسجيل من جديد واذا اختار نعم
                If MsgBox("انتهت مدة التفعيل البرامج , هل تريد ان تعمل تسجيل من جديد ؟", vbMsgBoxRtlReading + vbYesNo + vbQuestion + vbMsgBoxRight, "تسجيل البرامج") = vbYes Then
                    Me.LblTxt.Caption = "يجب عليك ان تعمل تسجيل البرامج اولا ... للتسجيل اتصل بالمبرمج "
                    Me.NM = NumMoaalic ' مربع في النموذج اللي باسم نون ميم بيكون يساوي سريال المعالج
                    Me.NH = NumHard ' مربع في النموذج اللي باسم نون ئيج بيكون يساوي سريال الهارد
                Else ' والا اي اذا اختار لا يريد التسجيل من جديد
                    DoCmd.Quit ' سيغلق القاعدة
                End If
            Else ' واذا لم يكون هناك اي شيء من الاول
                 DoCmd.OpenForm "frmsereki", acNormal ' فتح نموذج الاخر
                 DoCmd.Close acForm, Me.Name ' واغلاق نموذج الحالي
        End If
            DoCmd.SetWarnings False ' اسكات الرسائل التنبيهية
            ' تحديث اخر تاريخ الدخول في جدول بتاريخ الان
            DoCmd.RunSQL "UPDATE TblTascil SET TblTascil.EndDate = Now() WHERE (((TblTascil.NumForHard)=NumHard()) AND ((TblTascil.NumForMoaalic)=NumMoaalic()));"
            DoCmd.SetWarnings True ' تفعيل تنبيهات الافتراضية
End Sub

Private Sub Tascil_Click() ' كود عند الضغط على زر التسجيل
On Error Resume Next
' "1";"7";"30";"90";"180";"365";"18250"
    Dim NumBeforeTascil, NumForTascil ' متغيران واحد لکي نعرف رقم الاول للتسجيل قبل استخدام الوقت والاخر رقم تسجيل الحقيقي
    Dim Spl() As String, LookAllMNT As String ' متغيران الثاني لكي نعرف كل معلومات في الجدول اذا تم تسجيل البرامج من قبل والاخر للتجزئة المعلومات
    Dim LookMyNm, LookMyNh, LookMyNTascil ' مساعد تجزئة المعومات
    Dim FrqDate As Integer ' متغير نستخدم لفرق بين تاريخ التسجيل و الدخول
    ' اذا كان كومبوبوكس مدة التفعيل في النموذج بيكون خالي من البيانات يظهر رسالة ويخبره و يركز على الكومبوبوكس وينتهي مشوار ضغط على الزر
    If Len(Me.Midde & "") = 0 Then MsgBox "اختر مدة التفعيل": Me.Midde.SetFocus: Exit Sub
        ' رقم قبل تسجيل يساوي رقم واحد مع تحول سريال المعالج الى الارقام مع تحويل سريال الارد تقسيم واحد مع تحويل سريال الهارد
        NumBeforeTascil = Trim(Round(((1 & TxtInTextToNumber(NumMoaalic) & TxtInTextToNumber(NumHard)) / (1 & TxtInTextToNumber(NumHard)))))
        ' جميع المعلومات يساوي جلب بيانات الحقل سريال المعالج و الهارد ورقم التسجيل و مدة التسجيل و تاريخ التسجيل و تاريخ اخر مرة الدخول في جدول تبل التسجيل
        ' بشرط ان يكون سريال المعالج والهارد في جدول بيكون يساوي مع سريال المعالج والهارد اللي يخررجه الفانكشن
        LookAllMNT = Nz(DLookup("[NumForMoaalic] & ""|"" & [NumForHard] & ""|"" & [NumTascil] ", "TblTascil", _
                                                                                                                                                            "[NumForHard]='" & NumHard & "'" & "and [NumForMoaalic]='" & NumMoaalic & "'"), "")
    Spl = Split(LookAllMNT, "|") ' قم بتجزئة كل المعلوةمات حسب رمز هذا الرمز |
       ' الان عطينا لكل متغير جزئه حسب ما جلبنا في الجدول
        LookMyNm = Spl(0): LookMyNh = Spl(1): LookMyNTascil = Spl(2)
        ' فرق بين تاريخين تاريخ الان مع اضافة مدة التفعيل مع اخر تاريخ الدخول
        FrqDate = DateDiff("d", Now, DateAdd("d", Me.Midde, FDate))
        
    If Me.Midde.Column(0) = 1 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 1
        WqtTascil = Format(Date, "yyyymmdd") ' وقت التسجيل بيكون هذا النوع
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل * 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil)) * 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 7 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 1
        WqtTascil = Format(Date, "yyyymmdd") + 3 ' وقت التسجيل يساوي سنة و شهر و يوم زائد 3
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 3 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 3) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 30 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 30
        WqtTascil = Format(Date, "yyyymmdd") + 15 ' وقت التسجيل يساوي سنة و شهر و يوم زائد 15
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 15 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 15) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 90 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 90
        WqtTascil = Format(Date, "yyyymm") + 45 ' وقت التسجيل يساوي سنة و شهر  زائد 45
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 45 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 45) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 180 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 180
        WqtTascil = Format(Date, "yyyymm") + 90 ' وقت التسجيل يساوي سنة و شهر  زائد 90
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 90 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 90) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 365 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 365
        WqtTascil = Format(Date, "yyyymm") + 182 ' وقت التسجيل يساوي سنة و شهر  زائد 182
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 182 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 182) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 18250 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 18250
        WqtTascil = Format(Date, "yyyymm") + 9125 ' وقت التسجيل يساوي سنة و شهر  زائد 9125
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 9125 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 9125) / 212, ".", ""), 1, 15)
    End If
        
        If Me.NTascil = NumForTascil Then ' اذا كان رقم التسجيل المدخلة بيكون يساوي مع رقم التسجيل الحقيقي للبرامج
            If LookAllMNT <> "" Then ' اذا هذه  ليس اول مرة يسجل على هذه الجهاز
                DoCmd.SetWarnings False ' اطفاء تنبيهات الافتراضية للنظام
               ' تحديث المعلومات في الجدول حسب معلومات التفعيل الجديدة
                DoCmd.RunSQL "UPDATE TblTascil SET TblTascil.NumForMoaalic = [Forms]![FrmTescil]![NM], TblTascil.NumForHard = [Forms]![FrmTescil]![NH]," & _
                                                "TblTascil.NumTascil = [Forms]![FrmTescil]![NTascil], TblTascil.Midda = [Forms]![FrmTescil]![Midde], TblTascil.firstdate = Now(), " & _
                                               " TblTascil.EndDate = Now() WHERE (((TblTascil.NumForMoaalic)=NumMoaalic()) AND ((TblTascil.NumForHard)=NumHard()));"
                DoCmd.SetWarnings True ' تشغيل تنبيهات الافتراضية للنظام
            Else ' واذا هذه المرة هي اول مرة للتسجيل
              ' اضافة معلومات التفعيل الى جدول
              DoCmd.SetWarnings False ' اطفاء تنبيهات الافتراضية للنظام  
              DoCmd.RunSQL "INSERT INTO TblTascil ( NumForMoaalic, NumForHard, NumTascil, Midda, firstdate, EndDate ) " & _
                                                "SELECT [Forms]![FrmTescil]![NM] AS Expr1, [Forms]![FrmTescil]![NH] AS Expr2, [Forms]![FrmTescil]![NTascil] AS Expr3," & _
                                                "[Forms]![FrmTescil]![Midde] aS Expr4, Now() AS Expr5, Now() AS Expr6;"
                DoCmd.SetWarnings True ' تشغيل تنبيهات الافتراضية للنظام
            End If
                MsgBox "تم تسجيل البرامج لمدة " & Me.Midde.Column(1) ' اظهار رسالة ويظهر للمستخدم ان تم تفعيل لمدة المحددة
                DoCmd.OpenForm "frmsereki", acNormal ' فتح نموذج الاخر
                DoCmd.Close acForm, Me.Name, acSaveYes ' اغلاق النموذج الحالية وهو نموذج التسجيل
            ElseIf Len(Me.NTascil & "") = 0 Then ' اذا كان مربع نصي لرقم التسجيل بيكون فارغا
                MsgBox "اکتب رقم التسجيل ... وحاول مجددأ" ' اظهار رسالة ويخبره بان رقم التسجيل المدخلة خطأ
                Me.NTascil.SetFocus 'تركيز على مربع نصي لرقم التسجيل في النموذج
            Else ' والا
                MsgBox "خطأ في رقم التسجيل ... حاول مجددأ" ' اظهار رسالة ويخبره بان رقم التسجيل المدخلة خطأ
                Me.NTascil = "" 'قم بافراغ مربع نصي رقم التسجيل في نموذج
                Me.NTascil.SetFocus 'تركيز على مربع رقم التسجيل في نموذج
        End If
End Sub

Private Sub BtnQuit_Click() ' كود عند ضغط على زر اغلاق
    ' اغلاق القاعدة
    DoCmd.Quit
End Sub

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

Option Compare Database
 Function TxtToNumber(ByVal C As String) As String
   Select Case C
     Case "A", "J", "R": TxtToNumber = 9
     Case "B", "K", "S": TxtToNumber = 1
     Case "C", "L", "T": TxtToNumber = 7
     Case "D", "M", "U": TxtToNumber = 3
     Case "E", "N", "V": TxtToNumber = 5
     Case "F", "O", "W": TxtToNumber = 8
     Case "G", "P", "X": TxtToNumber = 2
     Case "H", "Y": TxtToNumber = 6
     Case "I", "Q", "Z": TxtToNumber = 4
     Case "-", "_", "\", " ", "/", ";", ":": TxtToNumber = ""
     Case Else
       TxtToNumber = C
   End Select
 End Function

Function TxtInTextToNumber(SText)
Dim Numbers
   Dim I As Integer
    For I = 1 To Len(SText)
        If IsNumeric(Mid(SText, I, 1)) Then
            Numbers = Numbers & Mid(SText, I, 1)
            Else
            Numbers = Numbers & TxtToNumber(Mid(SText, I, 1))
        End If
    Next
    TxtInTextToNumber = Trim(Numbers)
End Function

مع هذا الكود في النموذج التسجيل في قاعدة كراك

Option Compare Database
    ' تم اعداد من قبل
    ' Shivan Rekany شفان ريکاني
    ' وليس لدينا مانع استخدامه في برامجكم فقط نريد منكم الدعاء
Private Sub Tascil_Click() ' كود عند الضغط على زر التسجيل
On Error Resume Next
    Dim NumBeforeTascil, NumForTascil ' متغيران واحد لکي نعرف رقم الاول للتسجيل قبل استخدام الوقت والاخر رقم تسجيل الحقيقي
    Dim WqtTascil ' ھو رقم من التاريخ لکي يقسم عليھ رقم قبل التسجيل
    ' اذا كان كومبوبوكس مدة التفعيل في النموذج بيكون خالي من البيانات يظهر رسالة ويخبره و يركز على الكومبوبوكس وينتهي مشوار ضغط على الزر
    If Len(Me.Midde & "") = 0 Then MsgBox "اختر مدة التفعيل": Me.Midde.SetFocus: Exit Sub
    ' اذا كان كومبوبوكس مدة التفعيل في النموذج بيكون خالي من البيانات يظهر رسالة ويخبره و يركز على الكومبوبوكس وينتهي مشوار ضغط على الزر
    If Len(Me.NM & "") = 0 Then MsgBox "اكتب رقم المعالج": Me.NM.SetFocus: Exit Sub
    ' اذا كان كومبوبوكس مدة التفعيل في النموذج بيكون خالي من البيانات يظهر رسالة ويخبره و يركز على الكومبوبوكس وينتهي مشوار ضغط على الزر
    If Len(Me.NH & "") = 0 Then MsgBox "اكتب رقم الهارد": Me.NH.SetFocus: Exit Sub
        ' رقم قبل تسجيل يساوي رقم واحد مع تحول سريال المعالج الى الارقام مع تحويل سريال الارد تقسيم واحد مع تحويل سريال الهارد
        NumBeforeTascil = Trim(Round(((1 & TxtInTextToNumber(Me.NM) & TxtInTextToNumber(Me.NH)) / (1 & TxtInTextToNumber(Me.NH)))))
        
    If Me.Midde.Column(0) = 1 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 1
        WqtTascil = Format(Date, "yyyymmdd") ' وقت التسجيل بيكون هذا النوع
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل * 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil)) * 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 7 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 1
        WqtTascil = Format(Date, "yyyymmdd") + 3 ' وقت التسجيل يساوي سنة و شهر و يوم زائد 3
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 3 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 3) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 30 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 30
        WqtTascil = Format(Date, "yyyymmdd") + 15 ' وقت التسجيل يساوي سنة و شهر و يوم زائد 15
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 15 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 15) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 90 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 90
        WqtTascil = Format(Date, "yyyymm") + 45 ' وقت التسجيل يساوي سنة و شهر  زائد 45
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 45 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 45) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 180 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 180
        WqtTascil = Format(Date, "yyyymm") + 90 ' وقت التسجيل يساوي سنة و شهر  زائد 90
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 90 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 90) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 365 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 365
        WqtTascil = Format(Date, "yyyymm") + 182 ' وقت التسجيل يساوي سنة و شهر  زائد 182
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 182 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 182) / 212, ".", ""), 1, 15)
    ElseIf Me.Midde.Column(0) = 18250 Then ' اذا كان عمود المرقم بصفر في كومبوبوكس مدة بيكون يساوي رقم 18250
        WqtTascil = Format(Date, "yyyymm") + 9125 ' وقت التسجيل يساوي سنة و شهر  زائد 9125
        ' ورقم التسجيل بيكون 15 ارقام من تقسيم رقم قبل التسجيل تقسيم وقت التسجيل ضرب 9125 تقسيم 212 و استبدال نقطة (.) ب لا شيء
        NumForTascil = Mid(Replace(((NumBeforeTascil / WqtTascil) * 9125) / 212, ".", ""), 1, 15)
    End If
        Me.NTascil = NumForTascil ' مربع رقم التسجيل يساوي رقم التسجيل
End Sub

Private Sub BtnQuit_Click() ' كود عند ضغط على زر اغلاق
    ' اغلاق القاعدة
    DoCmd.Quit
End Sub

* قاعدة الكراك راح يكون عند المبرمج والاخر سيكون في قاعدة بيانات البرامج اللي يعمله المبرمج ويعطيه للعميل
* من الممكن ان يتغير ارقام اي نوع عطاء رقم التفعيل حسب الرغة

اتمنى ان يستفيد منه اكبر عدد ممكن من الاعضاء

تقبلوا تحياتي
 

 

ShivanHimaye.rar

  • Like 4
  • Thanks 5

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information