اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

رضا عقيل

04 عضو فضي
  • Posts

    102
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو رضا عقيل

  1. أخي ابو هادي أخي محمد طاهر هذا المثال الأصلي على إكس بي ولكن بتنسيق 2000 وبذلك يفي الغرضين لأنه مفكوك وتستطيع أخي ابو هادي أن تحوله بنفسك على أكسس 2000 وكذلك تستطيع الاطلاع على الكود أخي محمد طاهر لي سؤال بسيط وهو أنه لا يصلني إعلام بوجود رد في مشاركاتي سوى بالرسائل الخاصة فقط فماذا أفعل pro_reda2000.rar
  2. أبو هادي والله إني بحبك جداً وآسف على التأخير في الرد لأن جهازي في البيت عليه أوفيس 2000 يحتاج صيانه وأنا أتابع الموضيع من جهاز آخر عليه xp ومن هنا كانت جزء من مشكلة التأخير عموماً لك رسالة خاصة أرجوا الاطلاع عليها . بالنسبة لوضع مثال 2000 جهازي يتصلح اليوم بإذن الله أما البنسبة لمحاولات أخي المزيني فكان يستخدم فيه الدوال وأنا لا زلت ضعيف فيها أما هذه المحاوله فهي محاولة لإخفاء أدوات التحرير نفسها وليس التأكد من فتحها اما لا وببساطه هي إخفاء لنافذة الأكسس فقط لا غير ...وهي لا تختلف عن محاولة أخونا اين مسقط وهذاالكود موجود في اكثر من موضع بالمنتدى ولكني جربته على الحماية وأعطى نتيجه جيدة . واليوم بغذن الله ستجد مثال على 2000 . لك منى التحية والتقدير وشكراً أستاذ محمد للدفاع عني سأرفق الملف مفكوك اليوم بإذن الله
  3. المثال مرفق مع خالص تحياتي الصلاحيات_اكس_بي.zip
  4. الآن نصل لأهم نقطه وهى كيفية تعريف الصلاحية للنموذج يتم إنشاء حقل يوضع على كل نموذج نريد عمل صلاحية له أو أي تقرير نريد عمل صلاحية له وهذا الحقل به دالة وهنا الصلاحية تنقسم إلا قسمين الأول == صلاحيات للمسئول فقط الثاني == صلاحيات للمستخدمين قلنا من قبل أن لكل نموذج أو تقرير يوجد مستوى صلاحية مناظر له وكل ما علينا هو استحضار قيمة هذا المستوى من جدول fbi وهو الذي تم إلحاق بينات المستخدم الحالي له بحيث نرى هل قيمة هذا المستوى لهذا المستخدم هى 1 أم 2 فغذا كان 1 يتم فنح النموذج أما إذا كانت 2 يتم إغلاق النموذج مع إظهار رسالة تفيد بعدم صلاحية المستخدم لهذا الإجراء .. أما بالنسبة للمسؤل أوالمدير فيتم البحث عن قيم الحقل emz وليس level لأنه هو الوحيد الذي سيكون رمزه mas أي مسئول وعند فتح النموذج إذا وجدنا أن قيمة هذا الحقل هي mas يفتح النموذج وإلا فليس له صلاحية الفتح أي ليس هو المسئول .. وفي المثال أو صلاحيات المستخدمين (( النموذج الأساس )) frm-p6 يوجد الحقل rmz وهو غير مرئي للمستخدم ويوجد به الدالة التالية DLookUp("[rmz]";"fbi") وهي الخاصة بإرجاء القيمة للحقل rmz من جدول fbi ووضعها في هذا الحقل ليتم المقارنه بعد ذلك بالكود وفي حدث عند الفتح للنموذج تم وضع الكود التالي وهو كود الصلاحية في جميع النموذج مع اختلاف طفيف من المسئول إلى المستخدم Private Sub Form_Open(Cancel As Integer) If Me![rmz] = "mas" Then 'إذا كان الحقل rmzقيمته تساوي mas DoCmd.OpenForm "frm-p6" 'افتح النموذج Else ' وإلا Beep 'صوت Dim zm 'إعلان عن متغير zm = DLookup("[user]", "fbi") 'المتغير يساوي اسم المستخدم الحالي MsgBox "عفوا يا سيد " & "( " & zm & " )" & " شاشة الصلاحيات والتحكم من اختصاص المسئول فقط !!!! ", vbOKOnly, "تحذيـــــــر" DoCmd.Close 'اغلق النموذج End If End Sub هذا الكود هو الأساسي وببساطه يقوم مقارنة الحقل rmz في النموذج والذي أخذ قيمته بالدالة السابقة وهل هذه القيمة هي mas أم لا وعلى هذا الأساس يتم فتح النموذج . أ======== أما النسبة للصلاحية للمستخدمين فنأخذ مثال عليها نموذج tar وبه مستوى الصلاحية level9 حقل الصلاحية هو الحقل الغير مرئي للمستخدم level9 وبه دالة =DLookUp("[level9]";"fbi") وهذه الدالة تقوم بإرجاع القيمة داخل الحقل level9 داخل الجدول fbi وفي حدث عند الفتح يتم وضع الكود التالي ونلاحظ أنه يختلف عن الكود السابق بدلاً من القيمة rmz نضع القيمة 1 Private Sub Form_Open(Cancel As Integer) If Me![level9] = 1 Then ' موضع الاختلاف في القيمة DoCmd.OpenForm "tar" DoCmd.GoToControl "no1" Else Beep Dim zm zm = DLookup("[user]", "fbi") MsgBox "عفوا يا سيد / " & "( " & zm & " )" & " ليس لك الحق بالدخول لهذه الشاشة ", vbOKOnly, "تحذيـــــــر" DoCmd.Close End If End Sub ==== بذلك نكون تطرقنا لجوانب الحماية وبقي شاشة الدخول إلى البرنامج النموذج frm-p1 وهو الخاص بالدخول إلى البرنامج وتسجيل اسم المستخدم وكلمة المرور بنفس أسلوب الكثير من النماذج السابقة كان مصدر هذا النموذج هو جملة sql عن طريق منشئ الاستعلامات داخل الخصائص والمعيار هو اسم المستخدم name عندما يدخل المستخدم اسماً في حقل اسم المستخدم name يتم تحديث الحقل المخفي password ليحتوي على قيمة كلمة المرور المأخوذه من جدول fb5 بناءا على اسم المستخدم ... وللتأكد من وجود المستخدم ضمن المستخدمين من عدمه يوضع الكود التالي في حدث بعد التحديث للحقل name مع إظهار رسالة تفيد عدم وجود المستخدم ضمن المستخدمين المعتمدين Private Sub name_AfterUpdate() DoCmd.Requery If (Eval("[Forms]![frm-p1]![pasword] Is Null")) Then Beep MsgBox "åÐÇ ÇáãÓÊÎÏã ÛíÑ ãæÌæÏ Öãä ÇáãÓÊÎÏãíä ÇáãÚÊãÏíä ÈÇáÍÇÓÈ.. ÊÃßÏ ãä ÇÓã ÇáãÓÊÎÏã ÃæáÇ !!!", vbInformation, "ÑÓÇáÉ ÊÍÐíÑíÉ" DoCmd.GoToControl "name" Me![name] = Null End If If (Eval("[Forms]![frm-p1]![pasword] Is Not Null")) Then DoCmd.GoToControl "zm" End If End Sub وعند وجود المستخدم فعلاً يتم نقل المؤشر إلى خانة كلمة المرور الحقل zm لكتابة كلمة المرور وبعد تحديث هذا الحقل يتم تشغيل الكود التالي ليتأكد البرنامج أن كلمة المرور التي كتبها المستخدم مطابقة لتلك المخزنة له في الجدول tb5 والكود التالي يوضع في حدث بعد التحديث للحق zm For r = 1 To 3 x = Me![pasword] If Me.zm = "12369874" Then DoCmd.SetWarnings False DoCmd.OpenQuery "q4", acNormal, acEdit ' هذا الاستعلام غير موجود في المثال DoCmd.SetWarnings True DoCmd.Close End End If If Me.zm = x Then DoCmd.SetWarnings False DoCmd.OpenQuery "q6", acNormal, acEdit ' استعلام إلحاق بيانات المستخدم الحالي بالجدول fbi DoCmd.SetWarnings True DoCmd.Close 'docmd.OpenForm " " End Else Beep MsgBox "كلمة المرور خاطئة ... حاول مرة أخرى", 48, ""محاولة أخرى End End If Next r MsgBox "لا محاولات أخرى فضلاً اتصل على المبرمج على الرقم 55555555 !", 48, ""خروج نهائي من البرنامج DoCmd.Quit End Sub ولي ملاحظة على هذا الكود أولاً القسم الأول منه يختبر الحقل zm فإذا ساوى الرقم 12369874 يتم تشغيل استعلام q4 وهذا الاستعلام أساساً غير موجود في المثال وأتوقع انه يقوم بحذف جميع المستخدمين من الجدول tb5 بما فيهم المدير أو المسئول حتى يتسنى للمبرمج إضافة مسؤول جديد وكلمة مرور جديدة له ... وهذا يحدث عند تحميل البرنامج لأول مره مثلاً .. وهذه الملاحظة مجرد استنتاج فكما تعلمون لست أنا من صنع المثال .. والجزء الثاني من الكود يقوم باختبار نفس الحقل zm فإذا وجده يساوي الحقل password طبعاً بالإعلان عن متغيرات مع عد لعدد المحاولات وإذا وجد القيمين متطابقين يدخل البرنامج وإلا يخرج من البرنامج بعد عدد معين من المحاولات أما الاستعلام الوحيد الخارجي الذي استخدمه أبو عقيل في الصلاحيات فهو الاستعلام q6 وهو استعلام تحديث يقوم بأخذ قيم سجل المستخدم الحالي بعد أن أدخل اسمه وكلمة مروره الصحيحه ويحدث بها بيانات الجدول fbi ليكون هذا الجدول دائماً هو جدول المستخدم الحالي . ملاحظات : هناك ملاحظة هامة على المثال وهي نقطة ضعف وتلافاها أبو عقيل في مثال آخر ولكني لم أعثر عليه .... وهي أنك تستطيع حذف وتعديل جميع المستخدمين وبل وتصنع من نفسك المسئول ذو الصلاحيات الكاملة وذلك بفتح الجدول tb5 والتعديل فيه بحذف النجوم وكتابة ما تريد وسيظهر على أنه نجوم ولكنك تعرف ما كتبت داخل اسم المستخدم وكلمة المرور بما أنك تعرف وظيفة كل حقل وهذه النقطة تم تلافيها بأن يقوم البرنامج بتشفير كلمة المرور والاسم عند إدخالها وتحويلها إلى شفره يتم استعادتها عند الدخول مره اخرى ... وقد تم عمل مثال عليها بعد التشفير ولكنى لم أعثر عليه ... وهناك حل آخر تفضل به الأستاذ المبدع اشرف خليل وهو إضافة كود لإخفاء الجدول وسأقوم بإضافته مع نموذ بإذن الله هذا كل شيء أتمنى أن أكون وفيت الشرح حقه فسلت أنا من صنع المثال ولذلك ما تجدونه من أخطاء فأرجوا تصحيحها دون سابق إنذار فلست خبيراً كما تظنون ولكني أجتهد فحسب أعانني الله وإياكم وأعاد إلينا أبو عقيل سالماً وأتمنى ألا يزعل على لأني أسأت بهذا الشرح السيء لمثالة الذي يعد من أجمل موضوعات البرمجة وهي الصلاحيات ...... مع تحياتي أخوكم رضا عقيل
  5. النماذج والاستعلامات . ======================= 1- نموذج إضافة المستخدمين frm-p2 وهو نموذج بسيط مصدره الجدول tb5 يتكون من حقل name وحقل password وحقل rmz وزر أمر ( ذهاب إلى سجل جديد ) ومكتوب عليه إضافة ... وعند إضافة أي مستخدم وبما أن حقل name مفتاح وحقل password لا يتكرر وحقل rmz لا يتكرر بذلك لن يسمح بإدخل مستخدم مرتين مع ملاحظة عند إدخال معلومات المسئول أو المدير يجب أن يأخذ حقل الرمز القيمة mas ( كما في مثالنا ) . وعند إضافة الحقول الثلاثة سيتم إعطاء القيمة 2 لكل مستويات الصلاحية لأنها القيمة الافتراضية . وعندما نريد تغيير هذه القيمة سيكون من نموذج الصلاحيات لاحقاً . . 2- نموذج حذف مستخدم frm-p5 وهو كما بالشكل نموذج مصدر السجل فيه عبارة عن استعلام تم إنشائه عن طريق منشئ الاستعلام ووظيفته تحديد سجل في جدول tb5 بناءاً على الاسم الذي سيتم اختياره من خلية اسم المستخدم .. بمعنى أنه عندما نختار من القائمة اسم مستخدم لنقوم بحذفه يقوم الاستعلام بتحديد ذلك السجل في جدول tb5 والذي يتساوى فيه الاسم الذي تم اختياره من القائمة مع حقل name في الجدول ... كما يوجد بالنموذج زر أمر حذف السجل وتم إنشاؤه بواسطة المعالج مع إضافة 3 أسطر من الكود إليه كما بالشكل 3- نموذج تعديل بيانات مستخدم frm-p5 وهذا النموذج مثل سابقه مصدر السجل فيه عبارة عن جملة sql استعلام تم إنشائه عن طريق منشئ الاستعلامات داخل الخصائص ويتم تحديد السجل الحالي بناءاً على الاسم الذي يتم إدخاله في حقل الاسم في النموذج فعند كتابة اسم مستخدم في حقل الاسم يتم تحديد السجل والذي يتساوى فيه الاسم مع حقل name تمهيداً للتعامل مع هذا السجل مع وضع قيمة الاسم من الجدول في حقل mes المخفي على النموذج وكذلك كلمة السر المناظره للاسم في حقل pasword على النموذج إيضاً في النموذج يوجد حقلين غير منضمين في النموذج وهما name و pas بعد كتابة الاسم المراد تعديل كلمة السر له في الحقل name التأكد من عدم خلو الحقل من البيانات والتأكد من وجود هذا المستخدم ضمن المستخدمين بكود يوضع في خصائص هذا الحقل ( name ) في حدث بعد التحديث إذا كان المستخدم ضمن المستخدمين والاسم صحيح سينتقل المؤشر إلى خلية كلمة المرور السابقة والتي اسمها pas وهي حقل غير منضم وبعد كتابة كلمة المرور يتم التأكد من أن كلمة المرور المدخله تساوي كلمة المرور الخاصة بذلك المستخدم فعلاً وإذا لم تساويها يتم اصدار رسالة تفيد ذلك مع إخلاء الحقل والرجوع لنفس الحقل لكتابته من جديد ويتم ذلك بوضع كود في خصائص الحقل pas في حديث بعد التحديث كما بالشكل التالي وإذا كانت كلمة المرور صحيحة سيتم إظهار حقل password وهو لتغيير كلمة المرور . وبما أن الحقل pasword هو من الجدول نفسه فأي تحديث للحقل يتم التحديث في الجدول مباشرة ولكن كيف نحمي هذا الحقل من التحديث المباشر ... ببساطه لن يتم تمكين أو إظهار هذا الحقل أو زر الأمر حفظ إلا إذا كانت كلمة المرور صحيحة والاسم موجود فعلاً .... وزر الأمر حفظ مهمته إخلاء جميع الحقول مره ثانيه تمهيداً لتعديل مستخدم آخر أو إيذاناً بانتهاء التعديلات المطلوبة . 4- نموذج صلاحيات المستخدمين (( النموذج الأساس )) frm-p6 هذا النموذج هو الذي سنقوم بإعداد الصلاحيات للمستخدمين من خلاله ولكن قبل إعداد هذا النموذج يجب عليك تحديد مستويات الصاحيات أولاً .. بمعنى لدينا الآن 14 مستوى صلاحيات قابل للزيادة مع التعديل في الاستعلامات ومن الممكن استخدام أي عدد منهم وترك الباقي وفي مثال أبو عقيل استخدم 7 مستويات فقط مقابل هذه المستويات يجب أن يكون هناك نماذج أو تقارير أي النموذج رقم واحد مقابل للمستوى واحد ..... فإذا كان للمستخدم القيمة (1) في level1 يقوم البرنامج بالسماح له بفتح النموذج واحد وإذا كانت القيمة 2 لا يسمح له بفتح النموذج وبالنسبة لمثال أبو عقيل كانت المستويات كالتالي Level1 ========> نموذج f1 تسجيل موظف جديد Level2 ========> نموذج f2-3 تعديل معلومات موظف Level6 ========> نموذج frm-p2 تسجيل مستخدم جديد Level7 ========> نموذج frm-p5 حذف مستخدم Level3 ========> نموذج f-rturn إعادة موظف Level8 ========> نموذج name معلومات المنشأة Level9 ========> نموذج tar أساسيات البرنامج ولنرى الآن النموذج frm-p6 ولماذا لم نرى له صلاحية ضمن مستويات الصلاحيات مع أنه محمى ومحجوب عن المستخدمين وممنوح صلاحيته للمدير أو المسئول وهذا ما سنعرفه النموذج مصدره جملة sql تم انشائها عن طريق منشئ الاستعلامات داخل خصائص النموذج كما بالشكل السابق وبنفس أسلو ب وطريق عمل النماذج السابقة .... أما مصدر الصف نفسه للحقل user فهو أيضاً جملة sql مبنيه بمنشئ الاستعلامات داخل الخصائص ومهمتها عرض أسماء المستخدمين جميعاً من الجدول ما عدا المستخدم الذي قيمة الحقل rmz له تساوي mas أي عرض جميع المستخدمين ما عدا المسئول فهو دائماً صلاحياته مفتوحه لا ويحتاج لتعديل صلاحيات نفسه .... وعند اختيار اسم المستخدم سيتم تحديث حقول levels في النموذج بيانات المستخدم بناءاً على معيار اسم المستخدم نفسه ...مع وضع الكود التالي بعد في حدث بعد التحديث للحقل usre DoCmd.Requery 'تحديث النموذج لعرض الحقول DoCmd.GoToControl "level1" 'الذهاب إلى الحقل الأول الآن بعد اختيار اسم المستخدم وعرض صلاحياته نستطيع التعديل فيه بتغيير قيم levels من لا إلى نعم والتي ستقوم بتخزين القيم 1 بدلاً من نعم في الجدول والقيمة 2 بدلاً من لا كما أسلفنا في الحديث عن الجداول . وبعد تعديل الصلاحيات للمستخدم وبالضغط على زر أمر حفظ التغييرات الجديدة للمستخدم يتم الحفظ مع إخلاء حقل user وكذلك تحديث النموذج ليعود كما تم الفتح عليه تمهيداً للتعديل في مستخدم جديد مع وضع الكود التالي في حدث عند الضغط لزر الأمر DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 DoCmd.GoToControl "user" Me![user] = Null DoCmd.Requery يليه الجزء الثالث
  6. بسم الله الرحمن الرحيم عرض أخونا أبو عقيل مثال في الصلاحيات والترميز وعمليات المستخدمين وهو مثال قيم وأردت عرضه على الأعضاء مع التعرض بالشرح لموضوع الصلاحيات وهذا الشرح مجرد اجتهاد فقط فلست أنا من صنع المثال وأتمنى أن أكون عند حسن ظنكم فلست خبيراً كما تظنون ولكني طالب علم أجتهد فقط لا غير كما أرجوا أن يسامحنى أبو عقيل أعاده الله إلينا سالماً على هذا الشرح السيئ لمثال عبقري من أمثلته . ========================================== تعتمد طريقة أبو عقيل في الصلاحيات على طريقة الخيارات للمستخدمين في تحديد من المتاح أو المسموح له فتح النماذج أو التقارير إذا الصلاحيات هي فتح النموذج أو التقرير وبكلامنا العادي أننا إذا صنعنا جدول يتم تحديثه كلما تم فتح البرنامج ليكون موجود به اسم المستخدم الحالي فقط وكلمة السر الخاصة به مع مستويات الصلاحيات له ، وعند فتح أي نموذج يذهب البرنامج إلى الجدول ثم يختبر خلية الصلاحية فإذا كانت بنعم ( أو 1) يفتح النموذج وإذا كانت ( لا أو 2) يغلق النموذج مع رسالة بها اسم المستخدم الحالي تقوله له ليس من حقك فتح هذه الشاشة . ومن الأفضل استيراد الكائنات الخاصة بالصلاحيات ثم نسخ الأكواد اللازمة لعملها على النماذج ولكننا سنبدأ من البداية حتى نتعرف على كيفية بنائها وكيفية تطويرها وملاءمتها لبرامجنا . وفي مثال أخونا أبو عقيل كانت الأدوات كالتالي مع أشكال توضح خصائص الحقول أ- الجداول 1- جدول المستخدمين ( tb5) وهو الذي سيحتوي على معلومات جميع المستخدمين ويحتوي على * حقل Name لاسم المستخدم مفتاح يمنع تكرار أسماء المستخدمين * حقل rmz لرمز المستخدم والغرض الأساسي منه تمييز المدير أو مالك البرنامج بالرمز ( mas ) ليتم تمييزه عن غيره من المستخدمين وهذا التمييز هو الذي سيستخدم لاحقاً في فتح نموذج الصلاحيات نفسه وهو حقل لا يسمح بالتكرار حتى يكون المسئول واحد فقط . * حقل password وهو الخاص بالرمز السري للمستخدم أو الرقم السري وقناع الإدخال يكون password ليكون نجوم ولا يسمح بالتكرار . *بعد ذلك تأتي حقول المستويات ( levels ) وهذا الحقل عبارة عن قائمة من عمودين عمود يحتوي على صفين بهما القيمين (1 ،2) والعمود الآخر قيمتين مناظرتين ( نعم ولا ) وتم تغيير خصائص هذا الحقل ليظهر كعمود واحد به الأربع قيم أسفل بعضهم ويتم تخزين القيمة 1 أو 2 في الحقل وسبب الاختيار لخصائص هذا الحقل بهذا الشكل لأنه سيتم إدخال قيم هذا الحقل من نموذج الصلاحيات وستكون القيم الظاهرة في النموذج هي نعم أولا بينما يتم تخزين القيم في الحقل ب 1مناظره لنعم أو 2 مناظره لـ لا وهكذا حتى المستوى الرابع عشر كما في مثالنا ... أما البيانات التي ستخزن في هذا الجدول فهي اسم المستخدم ورمزه ورقمه السري وصلاحياته والتي سنقرنها بنموذج أو أكثر مقابل لكل level بمعنى أننا لو اعتبرنا أن لدينا نموذج form1 سنقرنه بـ level1 فإذا كانت قيمة حقل level1 =1 سنسمح بفتح النموذج أما إذا كانت قيمته 2 سيتم إغلاق النموذج . الشخص الذي سيوضع رمزه ( حسب مثال أبو عقيل ) = mas هو الذي سيكون له الصلاحيات الكاملة بغض النظر عن اسمه أو كلمة السر الخاصة به . وسنقوم بتغيير جميع مستويات الصلاحية الخاصة به في الجدول إلى الرقم 1 2- جدول fbi وهذا الجدول به نفس الحقول السابقة بحيث أنك تستطيع نسخ الجدول السابق مع تغيير اسمه ثم حذف حقل password منه ولكن أخونا أبو عقيل أضاف حقيلن آخرين وهما date و Time ليستخدمهما في تاريخ وتوقيت الحذف والإضافة والتعديل في البيانات وأعتقد أن هذين الحلقين ليس لهما علاقة مباشرة بموضوع الصلاحيات . هذا الجدول لن يتدخل أحد في كتابة بياناته بل سيقوم البرنامج بتحديث بياناته بناءاً على اسم المستخدم الذي سندخله في شاشة الدخول للبرنامج فعندما نكتب اسم المستخدم وكلمة مروره الصحيحة سيقوم البرنامج بتشغيل استعلام تحديث يأخذ بيانات المستخدم كاملة ويحدث بها سجل جدول fbi وكلما تغير المستخدم تغيرت بيانات سجل الجدول fbi حسب المستخدم الجديد . يليه الجزء الثاني وقد تم تجزأة الموضوع لكثرة عدد الصور
  7. فعلاً أخي رحال العمر أقصد التعديل في النماذج باستخدام محرر والفيجول بيسك أما الجدوال فليست هي القضية التي تشغلنا فكما تعرف الكثير من مبرمجي الأكسس يستطيعون التعديل في النماذج حتى بعد التحويل إلى mde باستخدام محرر والفيجوال بيسك ونحن نحاول منع ذلك حماية لبرامجنا مع خالص تحياتي للجميع أخوكم رضا عقيل
  8. هذه محاولة لمنع التعديل في تصميم قواعد mde وهي ليست الأولى ولكن ضمن سلسلة محاولات تولاها العديد من الأخوه الأفاضل وعلى رأسهم أخونا المزيني وهذا النموذج جاءت فكرته لي وفي نفس الوقت لأخونا ابن مسقط ولكنه سبقني بدقائق ووضعه في الفريق العربي لاختباره وها أنا أحاول أن أسبقه هنا لأضعه :) :) لاختباره ملاحظة : :SHY: :SHY: أنا لم أخترع شيء فقط تم عرض أكثر من مثال من قبل لإخفاء نافذة الأكسس ووجدتها فكره مناسبة لمنع التعديل في التصميم مع خالص تحياتي أخوكم رضا عقيل pro_reda.rar
  9. أخي ha98 الشرح مرفق مع صور في ملف وورد مع خالص تحياتي وأشكرك على شعورك الطيب مع خالص تحياتي لك وللمنتدى أعضاءاً وإدارة ___.rar
  10. أخي العزيز ha98 أولاً أشكرك على صرك وعلى شعورك الجميل وأدعوا الله أن يجنبك وجميع الأعضاء كل مكروه و أعتذر عن التأخير لظروف خارجه عن إرادتي وسأحاول إيجاز طريقة الحماية ببساطه كما يلي : الهدف من الحماية (( محاولة منع نسخ البرنامج على أجهزة أخرى بدون إذن صاحب البرنامج + منع التعديل في التصميم في حالة النسخ . عن طريق 1- ربط البرنامج برقم المعالج 2- وضع شرط عند فتح النماذج الرئيسية وهو البحث عن ملف من نوع معين في فهرس معين وإذا لم يجده يعتبر البرنامج غير شرعي . 1- بعد إنشاء قاعدة البيانات التي تريد وضع الحماية عليها قم باستيراد الكائنات التالية إلى قاعدتك الجديدة - جدول id - الوحدة النمطية api_ShowWindow - الماكرو AUTOEXEC - النموذج GetCPUID 2- يجب أن تكون المراجع لديك كما بالشكل التالي صورة رقم 1 3- في حدث عند التحميل للنموذج GetCPUID قم بتغيير اسم النموذج الذي سيتم فتحه في حالة وجود تسجيل للنسخه كما هو مبين بالصورة إلى لنموذج الذي تريده أن يكون النموذج الرئيسي لديك . صورة رقم 2 4- في حدث عند النقر على زر أمر الدخول للبرنامج في نفس النموذج قم بتغيير اسم النموذج الموضح بالشكل كما في الخطوة السابقة . صورة رقم 3 5 - لو لاحظت في النموذج الرئيسي الذي وضعته والمسمى form1 والذي ستضع بدلاً منه نموذجك الرئيسي في حدث عند الفتح ستجد الكود التالي صورة رقم 4 وهو خاص بالبحث عن ملف باسم معين إذا لم يجده الكود سوف يتم إغلاق البرنامج ويعتبر أنك لم تقم بتسجيلالبرنامج الآن أصبح لديك قاعدة البيانات وموجود عليها حماية من النسخ يمكنك تحويرها للتناسب مع قاعدتك الجديدة بأي شكل . فأحياناً تفضل وضع نموذج التسجيل مثلاً ليس هو نموذج البدء أو تفضل وضعه عند فتح النموذج الرئيسي حتى لا يتم تغييره من خيارات بدء التشغيل ،، كما يحلو لك . المهم هو الأدوات موجوده وعلينا توظيفها كما نشاء - أما الكراك فهو طريقه مبسطه وسهله لتسجيل نسخة البرنامج عند تشغيله قم بتشغيل نموذج ربط البيانات ثم اضغط مرتين بزر الماوس في الخليه التي بها مسار البيانات وابحث عن قاعدة البيانات التي تريد فك حمايتها . ثم قم بالضغط على زر إعادة التوجيه فيقوم البرنامج بربط جدول id في البرنامج المارد فك حمياته ثم نقوم بتشغيل النموذج الآخر المسمى GetCPUID وسنجد به أرقام التسجيل ورز تسجيل آلى وعند الضغط على هذا الزر سيقوم البرنامج بوضع الأرقام الصحيحة للمعالج في القاعدة المراد فك حمايتها وسيقوم بإنشاء الملف الخاص الذي تحدثنا عنه في مساره المحدد وبهذا تكون قمت بفك القاعدة المحمية بدون التدخل اليدوي مطلقاً . ملاحظة الصور مرفقة في ملف وورد أتمنى أن أكون وفقت في هذا الموجز ... ونلتقي بعد الفاصل مع تحياتي أخوكم رضا عقيل ___.doc
  11. اخي طباطبا إليك الملفات بصيغة zip وأعتذر عن التأخير :SHY: GetCPUID.zip
  12. إخواني الأحبة المثال المرفق مفكوك وينقسم إلى قسمين 1- القاعدة الأساسية ( البرنامج ) 2- الكراك وهو أداة تسجيل نسخة البرنامج ومرفق أيضاً ملفات تسجيل المرجع ( توضع في مجلد system) داخل فهرس الويندوز وكذلك أرفقت شعار بسيط من تصميمي عسى أن يعجبكم كشعار لمنتدى أوفيسنا وكما أسلفت المثال يعمل على ويندوز xp و2000 ولم أستطيع عمله على باقيى الإصدارت :( فمن لديه القدره فليفعل ويضع لنا الحل وجزاه الله خير الجزاء .... وأخيراً أتنتى أن أكون وفقت في إعداد هذا المثال وان ينال رضاكم pro_reda_xp_2000.rar
  13. كلامك صحيح أخي محمد الحماية تمت على متغير صلب ((( على رقم المعالج )))) وعلى ثلاث مستويات ورغم أنني سأذكرها إلا أنني متأكد من صعوبة فكها وضع شرط على النماذج قبل فتحها يمنع تماماً التعديل في النماذج وقد ذكرت ذلك كثيراً فيما مضى ولكن لم ينتبه إحد لذلك رقم المعالج طويل ويحتوي على أرقام وحروف وبعد استبعاد الحروف وإجراء بعد العمليات والمعادلات عليه يصبح من الصعب فكه وخاصة وأن تسجيل القيمة في الجدول لا يمكنك من استنتاج الرقم فكل جهاز له قيمته ورقمه الخاص بل ولكل شركه أرقامها الخاصة من المعالجات إخفاء نافذة الويندوز يعطل أيضاً كثيراً من سهولة العملية وعدم تحقق الشرط الأول لن يدخلك إلى شاشة التسجيل إبداً فإذا تحقق الشرط استعطت الدخول على شاشة التسجيل للبرنامج وهنا يكون عليك استنتاج الرقم المطلوب وإخيراً تعطيل الشيفت كل ذلك مجتمع (((( يعقد )))) العملية ويزيد الصعوبة (((( ويمكن يزهق ))))) مع تحياتي رضا عقيل
  14. أخي محمد طاهر هذا يعني أنك ألغيت الشيف ((( تمام عليك ))) ورأيت الجدول ما زلت أنتظر التقييم النهائي للطريقة
  15. أخي محمد طاهر لك جزيل الشكر والاحترام اتمنى أن اكون على مستوى اهتمامك لي ملاحظة : هناك مثال تم وضعه على أكسس 2000 في نفس المشاركه لك مني التحيةوالتقدير السلام وصل
  16. إخواني الكرام في أولمشاركة لي بموضوع في هذاالمنتدى الذي أتمنى له الازدهار والتقدم أردت طرح موضوع الحماية وقد طرحته منذ يوم واحد في الفريقالعربي للبرمجة أتمنى أن ينال رضاكم ============================================= في طريقنا لحماية أنفسنا وقواعد بياناتنا كان هناك العديد من الطرق والعديد من والآن انتقلنا إلى الحماية عن طريق رقم المعالج وهذا المثال الجديد في الحماية وأعتقد أنه الأقوى إلى الآن وأتمنى أن أكون قد وفقت في هذا المثال ولكن هناك بعض الملاحظات ========== خطوط عريضـة ========== 1- المثال المرفق يعمل على أكسس 2000 اليوم بإذن الله 2- دالة رقم المعالج لا تعمل حتى الآن إلا على نظام التشغيل windows xp ) و 2000 والرجاء ممن يستطيع معالجة هذه المشكله أن يضع حله هنا في هذه المشاركه ) 3- إذاً : النواتج ستكون مثالين أحدهما على والمثال xp فقط ولم أجربهما على NT بعد 4- مرفق مع المثال ملفين لتسجيل الدالة يجب وضعهما داخل مجلد system داخل فهرس الويندوز ====== الهــدف ====== 1- منع نسخ أو استخدام البرنامج 2- منع التعديل في التصميم حتى بعد التحويل إلى mde 3- جعل مهمة تسجيل البرنامج في يد المبرمج فقط ======== ملاحظة هامة ======== تسجيل البرنامج سيكون عن طريق برنامج كراك وليس يدوياً بل بقاعدة بيانات أخرى خارجيه تقوم بتسجيل البرنامج دون كتابة أي أرقام أو عمل أي شيء أمام العميل . ======== وأخيراً ..... ======== هذه النسخه للاختبار ولعرض الآراء والكراك جاهز .. للتنزيل بعد اختبار المثال .......والنسخه المفكوكه جاهزة أيضاً فور طلبها . ومن يستطيع فك حماية هذا المثال سيجد أسماء كل من ساهم في إخراج هذا المثال في النموذج . ==== أنتظر التعليقات ==== مع تحياتي أخوكم رضا عقيل =========================
×
×
  • اضف...

Important Information