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

صالح حمادي

أوفيسنا
  • Posts

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

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

  • Days Won

    29

كل منشورات العضو صالح حمادي

  1. السلام عليكم و رحمة الله تعالى و بركاته تقبل الله منا و منكم الصلاة و الصيام و القيام إخوتي في هذا المنتدى الغالي آسف جدا لتأخري في الرد لكثرة إنشغالاتي هذه الفترة من مرض الوالد إلى ضغط العمل المهم: لقد قمت بإضافة الملاحظات التي أشار إليها الإخوة إلى البرنامج و هي كالتالي: 1- ملاحظة الأستاذ @Shivan Rekany التي تخص مشكلة تقديم التاريخ قمت بالتعديل على المرفق بحيث إذا كانت المدة بين تاريخ اليوم و آخر إستعمال للبرنامج أكبر من 7 أيام يظهر البرنامج رسالة للتأكد من أن تاريخ الجهاز صحيح. 2- ملاحظة الأستاذ @sandanet التي تخص عدم التفعيل إذا كان البرنامج مفعل. الآن أصبح البرنامج يرفض التفعيل إذا كانت المدة المتبقية أكبر من 15 يوما. 3- ملاحظة الأخ @Aliko في ما يخص استعمال رقم الهارديسك. رقم النسخة الآن غير ثابت فهو يتغير من جهاز إلى آخر حسب رقم الهارديسك. و هذا هو المرفق:‫‫فترة تجريبية2003.rar ‫‫فترة تجريبية.rar بالنسبة للاشخاص الذين قاموا باستعمال المرفقات الموجودة في المشاركات السابقة عليهم بتشغيل البرنامج الموجود في هذا المرفق من أجل مسح جميع البيانات السابقة من الرجستري و البدء من جديد. حذف المجلدات من الرجستري.rar أهلين أخي ابا جودى تقبل الله صيامك لا يتم تفعيل النسخة بنفس الرقم السابق جرب المرفق الأخير نعم. و سوف أعدل على الكود في الأيام القادمة إن وجدت بعض الوقت من أجل أن يبقى التفعيل صالحا حتى بعد الفورمات إن شاء الله لاحظ الكود الموجود في المرفق فأنا استعملت نفس الكود
  2. نعم أخي أنا قلت في تعليق سابق جعلت رقم النسخة ثابت من أجل تبسيط الموضوع و يمكن أن نجعله متغير أما بالنسبة لرقم التفعيل الذي يولده برنامج التفعيل فهو يتغير من يوم إلى آخر جرب خذ رقم تفعيل اليوم ثم غير التاريخ و خذ رقم تفعيل ثاني و قارن بينهما
  3. طبقه تحت زر أمر في أي مكان تشاء هناك العديد من المواضيع في المنتدى تخص هذا الأمر استعمل خاصية البحث رقم اللوحة الأم هو الذي يتشابه عند بعض الشركات و ليس رقم الهارديسك شكرا جزيلا أستاذنا الغالي محمد صالح بنقاشك الجميل أثريت الموضوع كثير جزاك الله خير الجزاء نعم لا يمكن تخزين كل البيانات في الرجستري كما ذكرت ما جعلني أضطر إلى هذه الطريقة هو أن المستخدم عندما تنفذ مدة النسخة التجريبية يحذفها و ينزل نسخة ثانية و هكذا لكن بإستخدام الرجستري لا يستطيع ذلك هذا و الله أعلى و أعلم
  4. لا يجب أن يحصل ذلك لأنه في بعض الأحيان يطلب المستخدم تفعيل برنامجه قبل الوقت و لا يمكن أن ترفض طلبه بحجة أن المدة لم تنتهي
  5. نعم أخي شفان هذه هي الإجابة شكرا جزيلا أنا أضفت برنامج التفعيل مع المرفق لأن الهدف من المنشور هو تعليمي فقط طبق هذا الكود: SaveSetting "mm", "nn", "nember_days", 0 نعم يمكن ذلك باستخدام رقم الهارديسك إلا إدا كنت تعرف اسم المجلد الرئيسي و اسم القسم و اسم المفتاح و هذا لا يمكن معرفته لأنه موجود لاكود و النسخة التي تعطى للمستخدم تكون مغلقة
  6. شرح البرنامج: 1- يتعامل البرنامج مع الرجستري في حماية النسخة ( الريجستري عباره عن قاعدة بيانات في نظام التشغيل Windows .و يحتوي على معلومات أجهزة النظام و البرامج المثبتة والإعدادات، و بيانات حسابات المستخدمين على الكمبيوتر. و أي عملية تقوم بها على الجهاز تخزن بالريجستري . ) 2- عند أول تشغيل للبرنامج يقوم بحفظ تاريخ أول يوم للاستخدام و عدد أيام النسخة التجريبية و خوارزمية التفعيل كلها في الرجستري و يحذف الجدول الذي يحمل جميع البيانات بعد نقلها و حفظها بالرجستري. 3- للإطلاع على الجدول tbl الذي يشتمل المعلومات المهمة يجب عليك فتح البرنامج في وضع التصميم دون تشغيله لأنه عند أي تشغيل للبرنامج سوف يحذف الجدول و في حال لم تجد الجدول حمل نسخة أخرى من البرنامج. 4- اسم الحقل الذي يحدد مدة الفترة التجريبية هو nemberday 5- كل مرة تقوم بتشغيل البرنامج يقوم بحفظ التاريخ و الوقت الحاليين في الرجستري لمنع التلاعب بالتاريخ. 6- لحفظ قيمة بالرجستري نستخدم الكود التالي: SaveSetting AppName , Section, Key ,Setting appName اسم المجلد الرئيسي Section القسم KEY المفتاح Setting القيمة المراد تخزينها 7- لاستعادة القيمة من الرجستري نستخدم الكود التالي: dim X X = GetSetting(AppName , Section, Key) X هو الذي سوف يأخذ القيمة التي سوف نستدعيها 8- لحذف القيمة من الرجستري نستعمل الكود التالي: DeleteSetting AppName , Section, Key 9- و هذه هي الوحدة النمطية التي إستعملتها في البرنامج: Function salah(frm1 As String, frm2 As String, frm3 As String) 'On Error Resume Next Dim firstdate As Date Dim lastdate As Date Dim lasttime As Date Dim expdate As Date Dim nameschool As String Dim numschool As Double Dim khawarezmia As String Dim nember_days As Integer '-------------------------------------------------------------------- firstdate = GetSetting("aa", "bb", "firstdate", Nz(firstdate)) If firstdate = Empty Then SaveSetting "aa", "bb", "firstdate", Date End If firstdate = GetSetting("aa", "bb", "firstdate", Nz(firstdate)) '--------------------------------------------------------------------- lastdate = GetSetting("ss", "tt", "lastdate", Nz(lastdate)) If lastdate = Empty Then SaveSetting "cc", "dd", "lastdate", Date End If lastdate = GetSetting("ss", "tt", "lastdate", Nz(lastdate)) '--------------------------------------------------------------------- lasttime = GetSetting("zz", "hh", "lasttime", Nz(lasttime)) If lasttime = Empty Then SaveSetting "ee", "ff", "lasttime", Now End If lasttime = GetSetting("zz", "hh", "lasttime", Nz(lasttime)) '--------------------------------------------------------------------- nember_days = GetSetting("mm", "nn", "nember_days", Nz(nember_days)) If nember_days = Empty Then nember_days = 1 End If expdate = DateAdd("d", nember_days, firstdate) '--------------------------------------------------------------------- khawarezmia = GetSetting("gg", "pp", "khawarezmia", Nz(khawarezmia)) If khawarezmia = Empty Then numschool = DLookup("numscho", "tbl") SaveSetting "ii", "jj", "numschool", numschool khawarezmia = DLookup("khawr", "tbl") khawarezmia = Replace(khawarezmia, "numschool", numschool) SaveSetting "gg", "pp", "khawarezmia", khawarezmia nameschool = DLookup("namescho", "tbl") SaveSetting "kk", "ll", "nameschool", nameschool nember_days = DLookup("nemberday", "tbl") SaveSetting "mm", "nn", "nember_days", nember_days End If For Each ttable In CurrentData.AllTables If ttable.Name = "tbl" Then DoCmd.DeleteObject acTable, ttable.Name End If Next If Date < lastdate Then MsgBox "تاريخ الجهاز خاطئ" DoCmd.Quit Else If Date = lastdate And lasttime > Now Then MsgBox "ساعة الجهاز خاطئة" DoCmd.Quit End If If Date >= expdate Then MsgBox "إنتهاء مدة التفعيل عليك الإتصال بالمبرمج " SaveSetting "mm", "nn", "nember_days", 1 DoCmd.OpenForm frm3 DoCmd.Close acForm, frm1 Else SaveSetting "zz", "hh", "lasttime", Now SaveSetting "ss", "tt", "lastdate", Date nt = DateDiff("d", Date, expdate) MsgBox "بقي لك " & nt & " يوم على إنتهاء التفعيل" DoCmd.OpenForm frm2 DoCmd.Close acForm, frm1 End If End If End Function 10- و هذا الكود الخاص بإعادة التفعيل: numschool = GetSetting("ii", "jj", "numschool", Nz(numschool)) '--------------------------------------------------------------------- khawarezmia = GetSetting("gg", "pp", "khawarezmia", Nz(khawarezmia)) '--------------------------------------------------------------------- nameschool = GetSetting("kk", "ll", "nameschool", Nz(nameschool)) '--------------------------------------------------------------------- nember_days = GetSetting("mm", "nn", "nember_days", Nz(nember_days)) '--------------------------------------------------------------------- If Me.numero_act = Eval(khawarezmia) Then SaveSetting "mm", "nn", "nember_days", 140 nember_days = GetSetting("mm", "nn", "nember_days", Nz(nember_days)) DeleteSetting "aa", "bb", "firstdate" DeleteSetting "ss", "tt", "lastdate" DeleteSetting "zz", "hh", "lasttime" MsgBox "لقد تم تفعيل برنامجك لمدة" & nember_days & " يوما" salah Me.Name, "drm", "نموذج1" Else MsgBox "رقم التفعيل خاطئ" End If و هذا هو البرنامج مفتوح المصدر بصيغة 2010 و 2003 فترة تجريبية.rar فترة تجريبية2003.rar
  7. بالنسبة لقفل الوحدات النمطية هذا من أجل إضافة طابع الحماية أكثر على البرنامج و سوف أقوم بإزالتها و شرح الكود كاملا و باقي الأسئلة سوف أتحدث عليها في شرح البرنامج لقد أحببت أن يقوم الجميع بتجربة البرنامج قبل الإطلاع على الأكواد و سوف أشرح الأكواد و أعطيكم نسخة مفتوحة المصدر تتحكمون بها كما تشاؤون آمين يا رب العالمين جزاك الله خير الجزاء أستاذنا العود و نحن اليوم في أمس الحاجة للدعاء أخي سيف اانسخة صالحة لكل الأوقات و ليس رمضان فقط و سوف أجيب عن باقي الأسئلة في الشرح
  8. السلام عليكم استعمل هذا الكود في حدث بعد التحديث لمربع نص التاريخ: Dim a As Integer, b As Integer Me.äÕ6 = "01-" & Format(Me.m5s1, "mm/yyyy") a = Format(Me.m5s1, "mm") If a = 4 Or a = 6 Or a = 9 Or a = 11 Then b = 30 ElseIf a = 2 Then If Format(Me.m5s1, "yyyy") Mod 4 = 0 Then b = 29 Else b = 28 End If Else b = 31 End If Me.äÕ8 = b & "-" & Format(Me.m5s1, "mm/yyyy") و هذا هو التعديل على المرفق: fffc.rar
  9. أولا جزاك الله خير الجزاء صديقي العزيز شفان على هذا الدعاء و على كل هذه الملاحظات ما شاء الله عليك مشيت معها كلها تمام. هنا يستطيع المبرمج تحديد مدة النسخة التجريبية من خلال الجدول tbl الموجود مع القاعدة و بالضبط في حقل nemberday و أنا هنا وضعت رقم 1 و تستطيع تغييره كما تشاء. نعم وجربت انا انا غيرت تاريخ الجهاز الى قبل ان افتح القاعدة ظهر معي رسالة بأن خطأ في تاريخ الجهاز وهذا جيد لكن .... كن معي بعد قليل " في الاسواق " بالإضافة إلى إكتشاف إرجاع التاريخ هو يكتشف أيضا إرجاع التوقيت حتى لو أنقصت دقيقة واحدة من ساعة الجهاز سوف يكتشف البرنامج ذلك. الريجستري عباره عن قاعدة بيانات في نظام التشغيل Windows .و يحتوي على معلومات أجهزة النظام و البرامج المثبتة والإعدادات، و بيانات حسابات المستخدمين على الكمبيوتر. و أي عملية تقوم بها على الجهاز تخزن بالريجستري . نعم أخي شفان أنا وضعت رقم النسخة ثابت 54321 و هذا من أجل تبسيط فهم الموضوع و التركيز على موضوع واحد و هو الحماية بالرجستري و عدم إدخال رقم الهارديسك و غيره في الموضوع. و هذه الملاحظة صديقي مهمة جدا و ممتازة شكرا جزيلا لك و بعد ما نعرف طريقة و آلية عمل هذا البرنامج نستطيع تغيير رقم النسخة من رقم ثابت إلى رقم الهارديسك مثلا لتكون حماية البرنامج مضاعفة.
  10. وفقنا الله وإياكم أخي أكيد البرنامج راح يكون مفتوح المصدر فالهدف من هذه المشاركة هو إفادة أعضاء المنتدى بما علمنا الله في هذا المجال جزانا الله و إياك أستاذ محمد الصالح أهلين و سهلين بعودتك القوية للمنتدى بعد غياب طويل
  11. على عيني و راسي أخي لقد تم تغيير العنوان كما طلبت و هذه نسخة من البرنامج بــ2003 فترة تجريبية2003.rar
  12. السلام عليكم و رحمة الله تعالى و بركاته إخوتي الكرام حياكم الله و تقبل الله منا و منكم الصيامكم و القيام أضع بين أيديكم طريقة إنشاء نسخة تجريبية و حمايتها و قابلية تفعيلها و كل هذا بتوظيف الرجستري. خصائص البرنامج: 1- يكتشف إرجاع التاريخ 2- حتى لونزلت نسخة ثانية بعد إنتهاء التفعيل أو إنتهاء النسخة التجريبية فلن تعمل لأن الحماية مخزنة بالرجستري 3- رقم التفعيل يتغير من يوم إلى آخر حسب التاريخ 4- تستطيع تفعيل البرنامج بعد إنتهاء التفعيل بنفس النسخة 5- يحذف البرنامج الجدول الذي به رقم النسخة و كود الحماية مباشرة بعد أول تشغيل 6- يعطيك في أول تشغيل فترة تجريبية تحددها انت كما تشاء 7- رقم التفعيل مخبأة في مكان بالرجستري لا يمكن الحصول عليه هذا هو المرفق و أتمنى من الأعضاء أن يقوموا بتجربة المرفق و إعطائنا النتائج و من بعدها نقوم بشرح أكواد البرنامج: فترة تجريبية1.rar
  13. صديقي @ابا جودى لا حظ هذا المرفق و أخبرني اين الإختلاف form.rar
  14. السلام عليكم و رحمة الله تعالى و بركاته أخي أبا جودي ما شاء الله عليك دائما مبدع و لكن لو تلاحظ المرفق في المشاركة التالية للموضوع السابق يقوم بنفس العمل حمل المرفق و جرب قم بالتكبير و التصغير و سوف تلاحظ ذلك
  15. كل عام و الأمة الإسلامية بخير و عافية إن شاء الله بمناسبة هذا الشهر الفضيل لا يسعنا إلا أن, اللهم أجمع شمل المسلمين في كل مكان و وحد صفهم و أرفع رايتهم يا رب العالمين
  16. جازى الله جميع القائمين على هذا الصرح خير الجزاء إن شاء الله
  17. جزاكم الله كل خير أستاذ جعفر و الأستاذ تشفان
  18. السلام عليكم حياكم الله أخوتي الكرام هذه طريقة أخرى أسهل بدون استعمال استعلام و تلبي المطلوب: If Me.crt = "الكل" Then DoCmd.OpenReport "tbl", acViewPreview Else DoCmd.OpenReport "tbl", acViewPreview, , "country = '" & Me.crt & "'" End If عواصم الدول العربية.rar
  19. هذه الطريقة لا تغير أيقونة البرنامج الخارجية.
  20. شكرا جزيلا أخي تشفان هديتك رائعة و مقبولة إنشاء الله لقد حملت نسخة من قبل من هذا البرنامج و لكنه لم يشتغل معي أما هذه النسخة فتعمل بشكل ممتاز برافو عليك أخي تشفان
  21. السلام عليكم حسب علمي يمكن إنشاء اختصار للبرنامج بسطح المكتب و تغيير أيقونته بإستعمال هذا الكود: With CreateObject("WScript.Shell") With .CreateShortcut(.SpecialFolders("Desktop") & "\Test Database.lnk") .TargetPath = "f:\aa\Test.accdb" .WindowStyle = 1 .Hotkey = "" .IconLocation = "f:\aa\arabic.BMP, 0" .Description = "Test Icon Substitution" .WorkingDirectory = "f:\aa\" .Save End With End With أما تغيير أيقونته مباشرة فلم تمر عليا من قبل و الله أعلى و أعلم.
  22. الله يحفظك أخي إن شاء الله. الله يكون في عوننا على تكملة باقي الدروس
  23. السلام عليكم لقد أضفت جميع أنواع وسيطات الرسائل هنا في هذا الدرس:
  24. الدرس الثامن: دوال الرسائل هذا الدرس مخصص لشرح دوال الرسائل: MsgBox: تستخدم هذه الدالة من أجل عرض رسالة في مربع حوار. MsgBox (سياق, ملف التعليمات, العنوان, أزرار , النص) النص: (مطلوب) هو نص الرسالة التي ستعرض في مربع الحوار أزرار: (اختياري) هو تعبير رقمي يحدد نوع الازرار التي يجب ان تعرض العنوان: و يمثل عنوان مربع الحوار ملف التعليمات:(اختياري) تعبير سلسله يعرف ملف التعليمات لتوفير تعليمات تتبع للسياق لمربع الحوار. اذا تم توفير ملف التعليمات ، يجب ايضا توفير سياق . سياق: (اختياري) تعبير رقمي يمثل رقم محتوي التعليمات المعينه الي موضوع "التعليمات" الملائمه حسب الكاتب التعليمات. اذا تم توفير سياق ، يجب ايضا توفير ملف التعليمات . وضعيات الوسيطة أزرار: 0 عرض زر موافق فقط. 1 عرض الأزرار موافق و إلغاء الأمر . 2 عرض الأزرار إحباط + حاول مره أخري + تجاهل . 3 عرض الأزرار نعم + لا + إلغاء الأمر . 4 عرض الأزرار نعم + لا . 5 عرض الأزرار إعاده المحاوله + إلغاء الأمر . 16 عرض أيقونة رساله هامه . 32 تعرض أيقونة التحذير و الإستعلام . 48 عرض رمز رساله تحذير . 64 عرض رمز رساله معلومات. 0 الزر الأول هو الإفتراضي. 256 الزر الثاني هو الإفتراضي. 512 الزر الثالث هو الإفتراضي. 768 الزر الرابع هو الإفتراضي. 4096 نظام مشروط؛ يتم تعليق كافه التطبيقات حتي يستجيب المستخدم ل# مربع الرساله. 16384 إضافه الزر تعليمات إلي مربع الرساله 65536 يحدد إطار مربع الرساله كإطار المقدمه 524288 تتم محاذاه النص لليمين 1048576 يحدد يجب أن يظهر النص اليمين إلي اليسار للقراءه علي الأنظمه العربيه مثال: MsgBox "السلام عليكم", 3, "مرحبا" InputBox: يعرض مطالبة في مربع حوار و تنتظر قيام المستخدم بإدخال نص أو النقر فوق زر، و ترجع سلسلة تحتوي علي محتويات مربع النص. InputBox(«افتراضي»; «العنوان»; «مطالبة»; «xpos»; «ypos»; «helpfile»; «context») مطالبة : (مطلوب) عرض الرسالة في مربع الحوار العنوان: (اختياري) و يمثل عنوان مربع الحوار افتراضي: (اختياري) . عرض النص الإفتراضي في مربع النص. إذا حذفت الإفتراضي، يتم عرض مربع النص فارغ. xpos: (اختياري). تعبير رقمي يحدد، بوحده التويب المسافة الأفقية بين الحافة اليمني لمربع الحوار من الحافة اليسري للشاشة. ypos: (اختياري) تعبير رقمي يحدد، بوحده التويب، المسافه العمودية بين الحافة العلوية لمربع الحوار من أعلي الشاشة. ملف التعليمات:(اختياري) تعبير سلسله يعرف ملف التعليمات لتوفير تعليمات تتبع للسياق لمربع الحوار. اذا تم توفير ملف التعليمات ، يجب ايضا توفير سياق . سياق: (اختياري) تعبير رقمي يمثل رقم محتوي التعليمات المعينه الي موضوع "التعليمات" الملائمه حسب الكاتب التعليمات. اذا تم توفير سياق ، يجب ايضا توفير ملف التعليمات . مثال: Dim str As String str = InputBox("ادخل اسمك", "الاسم")
×
×
  • اضف...

Important Information