مسابقة الشهر (هناك جوائز) :d



رائع اخي لكن إسمح لي ارفع الصور الى الموقع لأنها لاتظهر إلا بعد اخذ الرابط وفتحها بمتصفح
 


السلام عليكم

ها قد عدت من جديد.

الآن سنأخذ القسم الثاني من أوامر البرنامج وهو "استدعاء صندوق الفتح والحفظ"

أولا: سأبدأ بتعريف صندوق الفتح والحفظ، والغاية منه ولم يكون هو أفضل من غيره.
ثانيا: سأشرح كيف يتم استدعاؤه وكيف يتم التعامل مع معطياته.

فلنبدأ على بركة الله.

1 :
أ - ما هو صندوق الفتح والحفظ أو ما يُعرف بالإنجليزية باسم "CommonDialog"؟

- في أي برنامج يُوجد على حاسوبك اذهب إلى قائمة "File" ثم اضغط على "Save As..." سيظهر لك صندوق يطلب منك تحديد مكان لحفظ ما ترغب بحفظه.
- في أي برنامج يُوجد على حاسوبك اذهب إلى قائمة "File" ثم اضغط على "Open" سيظهر لك صندوق يطلب منك تحديد الشيء الذي تريد فتحه.

ذلك الصندوق الذي يظهر هو ما يُعرف ب "Common Dialog" أو "صندوق الفتح والحفظ".
تنبيه (صندوق الفتح والحفظ ليس ترجمة ل "CommonDialog")

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

ج - بالنسبة لنا نحن كمبرمجين، لم هو أفضل من طرق أخرى؟
هناك طرق أخرى لكي نجعل مستخدِم برنامجنا يُحدد الملف الذي يُريد فتح أو المجلد الذي يُريد الحفظ فيه، لكنها كلها تقتضي منا المزيد من العمل وطبعا من يرغب في أن يُكثر العمل على نفسه إذا كانت هناك طريقة أسرع للحصول على نفس الغاية؟!!

من ناحية هناك من يُريد أن يُتعب نفسه والسبب هو أن يكون البرنامج متناسقا ويُظهر براعة المصمم...

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

ولهذا الأخير وُجد ال "CommonDialog".

ال "CommonDialog" هو صندوق يُوجد مع نظام الحاسوب وهو عبارة عن "مكتبة ربط ديناميكية" "DLL" وهو يُوجد تحت المسار التالي: "C:\Windows\System32" باسم "comdlg32.dll".

وكل برامج النظام أو أي برامج خارجية يُمكنها استدعاؤه في نفس الوقت، وكذلك برنامجي هذا الذي بين أيديكم، وطبعا أي برنامج ستصممونه وتحتاجون فيه لهذا الصندوق، ستقومون باستدعائه للعمل به، بعد أن تعرفوا بعد قليل كيف يتم ذلك.

ملحوظة:
ادخلوا موقع "http://www.google.com" واكتبوا "مكتبات الربط الديناميكية"، وستجدون عدة مواقع ستشرح لكم معناها والذي لا يُمكن أن أقوم به أنا هنا وإلا سأبتعد عن غاية كتابتي هنا وهي شرح أوامر برنامجي فقط.
وطبعا هذا لمن يُريد الاستزادة من المعرفة لا غير، أو من يُريد أن يُصبح محترفا.

2 :
كيف يتم استدعاء ال "CommonDialog"؟ وكيف يتم التعامل معه؟
أ - يتم التصريح في أعلى صفحة الأوامر بالتصريحين التاليين على أننا سنستخدم مكتبة الربط الديناميكية "comdlg32".
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

كما تلاحظون فإني وضعت تصريحين فحسب الأول هو "GetOpenFileName" الخاص بالفتح، والثاني هو"GetSaveFileName" الخاص بالحفظ.
ثلاث ملحوظات:
- لفهم الهيكلية التي يتم بها استدعاء "API" معينة مثل "GetOpenFileName" من داخل "comdlg32.dll" حاولوا قراءة عدة مواضيع عن "DLL" وقد تجدون شيئا يتحدث عن ذلك.
لكن بشكل عام فإن ذلك غير مفيد للمبرمج العادي بغنى عن مستواه، وذلك لأنه لكي تستدعي "API" معينة بنفسك عليك أن تكون على معرفة تامة بأوامر ال"DLL" المراد استدعاء "API" منه.
ولا أظن أي مبرمج عادي سيرغب في ذلك بما في ذلك أنا أيضا. (رغم أن الرغبة تُداعبني أحيانا). :)

- استدعاء ال"API" من "DLL" معين يتم بالنسبة للأغلبية الساحقة من المبرمجين على اختلاف مستوياتهم عن طريق الإنترنت أو عن طريق قاعدة بيانات تحتوي على كل ال "API" والغاية منها وحتى طريقة استخدامها أحيانا.
هذا يعني: استخدموا الطريقة السحرية الرائعة التي تُحقق كل الأمنيات وهي البحث في "Google".
على فكرة (هذا ليس إعلان :( ل "Google" فعملاق مثله لا يحتاج لدعاية).

- هناك "API" ثالث على الأقل في المكتبة "comdlg32" وهو ال"API" الخاص بتحديد مجلد. وقد يكون هناك "API" غير ذلك. (لكن هذا هو كل ما أعلمه من الموجود فيها).

ب - بعد التصريح نقوم بتحديد "نوع" "Type"
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

ما هو ال"Type"؟
الحقيقة لا أدري بالضبط :crying: فأنا لم أتعلم ال"VB" عن طريق مدرسة، وإنما لوحدي بأسلوب التجربة والخطأ، وتحليل الأوامر الجاهزة.

لكن يُمكن أن نقول إنه أشبه بتكوين أداة ما.
حيث يكون اسم الأداة هو "OPENFILENAME" في السطر التالي: Private Type OPENFILENAME
وتكون خواص الأداة هي المتغيرات المعرفة بين:
Private Type OPENFILENAME
و
End Type

وكما نقوم باستخدام خواص الأداة (مثلا) بالشكل التالي:
label1.Property = Value

فإننا نستخدم ال"نوع" "Type" بنفس الشكل:
OPENFILENAME.Property = Value
لكن في استخدام ال "Type" هناك شيء إضافي حيث أننا لا نقوم باستخدامه مباشرة كما فعلت في هذا السطر أعلاه وإنما نقوم باسناده إلى متغير قبل ذلك ويكون هذا عبر الشكل التالي:
Dim ofn As OPENFILENAME
حيث "ofn" هو المتغير الذي سيكون بمثابة اسم الأداة، وبهذا يكون استخدام ال "Type" هكذا
ofn.Property = Value

ج - اسناد النوع "OPENFILENAME" إلى متغير، وذلك يكون بهذا الشكل:
Dim ofn As OPENFILENAME

ملحوظة:
ofn و OPENFILENAME هي مجرد متغيرات ما يعني أنه يُمكنك استخدام أي اسم مكانها، فقط استخدم الأسماء التي ستختارها حسب نفس الهيكلية.

د - استدعاء صندوق الفتح أو الحفظ.
يتم ذلك بهذا الشكل:

On Error Resume Next
ofn.lStructSize = Len(ofn)
ofn.hwndOwner = Me.hWnd
ofn.hInstance = 1
ofn.lpstrFilter = "Icon Files (*.ico)" + Chr$(0) + "*.ico" + Chr$(0)
ofn.lpstrFile = Space$(254)
ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space$(254)
ofn.nMaxFileTitle = 255
ofn.lpstrInitialDir = "c:\"
ofn.lpstrTitle = "ÇÎÊÑ ÇáÃíÞæäÉ ÇáÊí ÊÑíÏ"
ofn.flags = 0
Dim a
a = GetOpenFileName(ofn)
If (a) Then
MsgBox Trim$(ofn.lpstrFile)
End If

- On Error Resume Next
هذه العبارة يضعها المبرمجون بعد الانتهاء من تصميم برنامجهم هي مهمة للغاية كي لا ينهار البرنامج في حال حدوث خطئ ما، لم يظهر عند عملية البرمجة.
ومعناها هو: في حال حدوث خطأ تجاوزه وتابع باقي الأوامر.

- باقي الأسطر سأتجاوز بعضها لأنه لن يُفيدكم معرفته بشيء (على الأقل حاليا).
وما يهمنا على أي حال هو الثلاثة أسطر التالية:
ofn.lpstrFilter = "Icon Files (*.ico)" + Chr$(0) + "*.ico" + Chr$(0)
ofn.lpstrInitialDir = "c:\"
ofn.lpstrTitle = "اختر الملف الذي تريد الحفظ فيه"

الأول نقوم في بتحديد نوع الملفات التي نريدها أن تظهر.
الثاني نحدد فيه المسار الافتراضي الذي نريد لصندوق الفتح أو الحفظ أن يعرض لنا محتوياته.
الثالث هو عنوان الصندوق وهو يظهر في شريط العنوان للصندوق.

- أخيرا هذا الجزء:
Dim a As String
a = GetSaveFileName(ofn)
If (a) Then
MsgBox Trim$(ofn.lpstrFile)
End If

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

السطر الأول واضح إنه تعريف لمتغير من نوع نصي وهو المتغير الذي سيحمل رد صندوق النص (سأتجاوز شرح نقطة الردود هنا لأنها درس في حد ذاتها)

السطر الثاني نقوم باستدعاء الصندوق إما بهيئة الحفظ وذلك باستخدام "GetSaveFileName" كما هو موجود في السطر أعلاه أو بهيئة الفتح وذلك باستبدال "GetSaveFileName" ب "GetOpenFileName"

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

هذا كل شيء. :sweatingb

بقليل من النباهة يُمكنك عزيزي القارئ أن تستغل هذا الصندوق بشكل مدهش للغاية فقط فكر.
وأي سؤال أنا في الخدمة.

هذا مثال جاهز لمن لا يُريد أن يًصدع رأسه بالكلام، ويريد الفعل. :cool:
المثال في المرفقات


صلاح الدين بن شبيبة
The MP
 

المرفقات

  • CommonDialog.zip
    3.2 KB · المشاهدات: 11


بارك الله فيك ولو انك لم تظع المثال افضل

لماذا ؟ عشان الي بدو يطبق والتطبيق افظل من الأخذ فالبتطبيق تستطيع الأظضاة وبتفهم شو بتعمل



مشكور اخي وانا مثلك لم اتعلم عن طريق المدرسة بل بالممارسة



حزاك الله كل خير ولو انك تضعها في موضوع منفرد افضل :d
 


لم يتملكني إحساس بأني وقت في فخ الكتابة في هذا المنتدى على الدوام؟ :schmoll: :schmoll:

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


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



اعذني اخي لم اكن اتوقع انك سوف تفهمني بهذه الطريقة

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


يا أخي أنا أمازحك فقط :giggle:

فلو لم أكن راضيا بالكتابة لما كتبت ولكنت انسحبت دون أن أقول شيئا.

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

ومسألة الكتابة في موضوع منفرد كنت أود القيام بها منذ البداية ولكني لم أجد في هذا المنتدى قسما عن ال "VB".

فبدا لي أن شرح حول برنامج ما سيكون غريبا وسط منتدى للكتب.
 


يبدوا انه انا الي فهمتك خلط :d


اخي كما تريد اذا كنت تريد وظعة بموضوع منفرد فهذا يعود لك اما اذا كنت تريد وظعه هنا هذا ايظا يعود لك


اسف اخي لأني فهمتك خلط :d
 


السلام عليكم

تحيه معطره بالحب الى اعذاء ومشرفين منتدى كتاب العرب وبعد

اليوم اقدم م برنامج يحسب لك عمرك

يتبع
 


اكيد اخوي شرح الطريقت

بس انا بنظمها الشرح
 


صباح الخير
[LINE]hr[/LINE]
اليوم جبت لكم برنامج قائمت المسنجر مع شرحه خلونا بصلب الموضوع واترككم مع الشرح
[LINE]hr[/LINE]
واجهت البرنامج
[LINE]hr[/LINE]

[LINE]hr[/LINE]
وهاذه صورت الرموز والشعارات:
[LINE]hr[/LINE]

[LINE]hr[/LINE]
والأن مع الشرح نبدء بسمه تعالى
[LINE]hr[/LINE]

[LINE]hr[/LINE]

[LINE]hr[/LINE]

وهلم جره لكل واحده

الأن اذا ارت ان تضيف الشكل الى المسنجر اذهب للمسنجر والصقه :clap: :clap: :clap: :clap:

لتحميل البرنامج من المرفقات
 

المرفقات

  • MSNToolS.zip
    253.7 KB · المشاهدات: 11


السلام عليكم

أعتذر على تأخري في إكمال الشرح

وأعتذر لأني سأتأخر أكثر في ذلك كوني منشغل بعض الشيء مع موقعي.

وقد ارتأيت أن أنبه لذلك حتى لا تحسبونني فررت :d

تحياتي
 


اوكي اخي الله يوفقك

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

ملاحظة : ليس شرطا ان يكون على مساحة مجانيه اذا كان لك مساحة غير مجانيه اركبها لك

وهاااي الخدمة فقط للمركز الاول
 


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

وللاسف ما حد شارك غير اخي The MP ارجوا ارسال لي اسم الموقع والبيانات التي يريدها لكي ارفع له كل شئ وارجوا منه اكمال الشرح عند الانتهاء


الرجاء لا احد يرد غير اخي The MP اي رد اخر سوف يتم حذفه
 


السلام عليكم

أعتذر جدا لتأخري ولكن زوار موقعي يُطالبون بمقالات علمية كثيرة وإنا بالكاد أجد الوقت لأكتب تلك المقالات، لذا أرجوا أن تعذروني.

نُكمل على بركة الله الشرح، كنت قد توقفت عند القسم الثالث من أوامر البرنامج وهو الخاص بالتعامل مع "مسجل النظام" "Registry System".

تنبيه: كل شرحي سيكون على أساس تعاملي مع نظام "XP" وبالتالي لست مسؤولا عن أي أخطاء أو ما شابه قد تواجه البعض ممن يستعملون أنظمة تشغيل غير ال "XP".

لنبدأ:
سأفترض في قراء هذا الشرح معرفتهم بمسجل النظام والغاية منه ولم قد نحتاجه في ال"VB"، لكن رغم ذلك سأقوم بكتابة شرح بسيط لمسجل النظام وبعض فوائده البسيطة حتى يكون الدرس أكثر شمولية.

مسجل النظام "Registry System" هو نظام لتسجيل العمليات التي يقوم بها المستخدمون على حاسوب معين، ابتدءاً من أأبسط الأمور كالاحتفاظ بنوع الخط الذي تكتب به في برنامج المفكرة أو الرسام إلى أمور معقدة تتعلق بنظام التشغيل نفسه، مثل امتدادات الملفات "*.*" وفي أي برنامج تعمل ومع أي برنامج تُعدّل وهكذا... وكمثال فإن صورة من نوع "JPG" تُفتح تلقائيا مع متصفح الصور ولكن إذا قمت بالضغط على أيقونة الصورة بالزر الأيمن للفأرة ثم قمت باختيار "Edit" فإن الصورة ستفتح مع برنامج "MSPaint". كون الحسوب يعرف ذلك يعود إلى أن هناك قيما معينة مُخزنة في مسجل النظام.
كما يستخدمه المبرمجون للاحتفاظ بخصائص معينة ما يُحددها مستخدم البرنامج حتى إذا عاد إلى العمل على البرنامج يجد تلك الخصائص موجودة، وكذلك لعمل تأمين لبرامجهم عبر الكثير التقنيات... وحتى لا أسيل لعاب ضعاف النفوس أضيف: وما خفي كان أعظم.

هناك خطأ شائع وهو الخلط بين "مسجل النظام" و"محرر سجل النظام" ومحرر سجل النظام هو ذلك البرنامج الصغير الذي يظهر لنا عندما نضغط على "Start" ثم "Run" ثم نكتب الكلمة "regedit"، أما "مسجل النظام" فهو في النظام نفسه وعن نفسي لا أعرف أين يُوجد بالضبط. وبالتالي فإن "محرر مسجل النظام" هو مجرد وسيلة للتعامل مع "مسجل النظام" وهذا يعني أن يُمكننا التعامل برمجيا مع مسجل النظام وليس فقط يدويا عبر المحرر الخاص به.

السؤال هو كيف نقوم بذلك بواسطة ال "VB"؟
الجواب كما هو متوقع عبر ال"API".

في البرمجة دائما يبحث المبرمج عن طرق أسرع لتنفيذ ما يرغب به ويبحث أيضا على تفادي تكرار كتابة ذات الأوامر البرمجية في كل مرة يحتاج فيها إلى التعامل مع شيء ما. لهذا يتجه البعض إلى حفظ الأوامر في ملفات نصية ثم يقومون بنسخها ولصقها متى ما دعت الضرورة لذلك. لكن رغم ذلك يبقى أحيانا استعمال تلك الأوامر بالطريقة التقليدية متعبا، لهذا يتم إنشاء ما يُعرف بال"Class Module" لا أعرف ماذا تعني بالعربية (أعني معناها الحقيقي وليس ترجمة كل كلمة على حدى).

وال"C.M" إذا كانت أوامرها مكتوبة بشكل جيد ودقيق فإنها تكون أشبه بأداة برمجية، أي تكون مثلها مثل "TextBox" أو "Label"... مع فرق أنها لا تكون ظاهرة للعيان، وبمعنى آخر هي تُسبه الأداة في طريقة استخدامها في كتابة الأوامر.

فمثلا لكتابة أمر معين نكتب مثلا:
Text1.text = Value
وكذلك الأمر بالنسبة ل"C.M" نكتب اسم ال "C.M" ثم الخاصية التي تم إنشاؤها مسبقا ثم القيمة التي نريد.

قد يطول شرح هذا كثيرا ليكون واضحا بشكل تام لذا سأختصر الأمر في التالي:
ال "Class Module" = اختصار الوقت والتنظيم إلى أبعد حد.

كيف نتعامل مع مسجل النظام بواسطة ال"VB" عن طريق ال"Class Module"؟

أولا: حمل هذه ال"Class Module" والتي توجد بها معظم ال"API" التي تُستخدم للتعامل مع مسجل النظام، (توجد بها الأوامر التي أستخدمها أنا بكثرة فقط، وهي في الغالب الأوامر التي ستحتاجون لها).

ثانيا: افتحوا مشروعا جديدا في ال"VB" ثم من قائمة "Project" اختاروا "Add Class Module" ثم من صندوق الحوار الذي سيظهر لكم اختاروا من أعلاه على اليسار "Existing" وبعدها إذهبوا إلى المجلد الذي قمتم بحفظ ال"C.M" به ومن ثم اختاروها واضغطوا "Open".

ثالثا: سأشرح طريقة كتابة نوعين فقط من القيم وهما النوعين الأكثر شيوعا، أما باقي الأنواع فهي خمسة: أربعة تُستعمل نادرا وإثنتان منهما لا أعرف كيف تُستخدم وهناك النوع الخامس وهو القيمة الرقمية وهي تُستخدم بشكل كثير لكن مع الآسف لا أجيد طريقة كتابتها.

النوعين اللذان سأشرح كيف يُكتبان هما:
1 - قيمة نصية
2 - قيمة من نوع "DWORD"

الطريقة العامة لكتابة قيمة أياً كانت هي كالآتي:

b.ClassKey = القسم الذي تريد أن تكتب به القيمة
b.SectionKey = "المسار الذي تريد أن تكتب به القيمة"
b.ValueKey = "مفتاح القيمة (اسمها)"
b.ValueType = نوع القيمة
b.Value = "القيمة التي تريد وضعها"
b.CreateKey

الشرح: (قد يبدو مستعصيا عليك فهم الشرح الآن لكن سيتضح بشكل أفضل مع الأمثلة التي سأرفقها في أسفل الموضوع)
- السطر الأول نحدد فيه القسم الرئيسي الذي نريد أن نكتب القيمة فيه، وأقسام مسجل النظام هي في الأساس أربعة وهي:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

ولو قمت بالذهاب إلى "Start" ثم "Run" ثم كتبت "Regedit" فسيظهر لك محرر مسجل النظام وستظهر لك هذه الأقسام الأربعة وربما يظهر لك قسم خامس.

القسم الأول خاص بالنظام نفسه، يُنصح أن لا تكتب أي قيم هنا ما لم تكن تعرف ما تفعله.
القسم الثاني خاص بكل مستخدم على حدى افعل ما يحلوا لك لكن بحذر.
القسم الثالث خاص بكل المستخدمين "All Users" احذر جيدا.
القسم الرابع هو الافتراضي. بصراحة لم أعمل معه من قبل إنه الذي لا فائدة منه، أنصح بعدم الاقتراب منه.

السطر الثاني: تكتب المسار الذي تريد أن تكتب به القيمة ويكون كيفما تشاء وإذا لم يكن موجود فسيتم إنشاؤه.

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

السطر الرابع: نوع القيمة:
لكتابة قيمة نصية نكتب: REG_SZ
لكتابة قيمة عددية من نوع "DWord" نكتب: REG_DWORD

السطر الخامس: القيم نفسها

السطر الأخير: أمر بالإنشاء ليتم كتابة القيمة في مسجل النظام

ملحوظة مهمة: لسبب لا أدريه بالنسبة للقيم من نوع "DWord" يجب اسنادها إلى متغير من نوع Long قبل أن يتم إنشاؤها، وذلك يكون بالشكل التالي:

dim MyValue as long
ثم:
MyValue= القيمة العددية التي ترغب في وضعها (غالبا ما تكون 0 أو1 وفي حالات قليلة قد تكون أكثر)
ثم:
b.Value = MyValue

لحذف القيمة نحتفظ بالأسطر الثلاثة الأولى فقط:
b.ClassKey = القسم الذي تريد أن تكتب به القيمة
b.SectionKey = "المسار الذي تريد أن تكتب به القيمة"
b.ValueKey = "مفتاح القيمة (اسمها)"
b.DeleteValue
ثم نغير السطر الأخير إلى : "b.DeleteValue" كما هو ملاحظ.

كما هو ملاحظ لا يتغير إلا السطر الأخير من "CreateValue" إلى "DeleteValue".
ملحوظة: لحذف مفتاح بأكمله نستخدم "DeleteKey" بدل "DeleteValue".

أخيرا استخراج قيمة من مسجل النظام:
استخراج قيمة سبق لنا تسجيلها أو قيم موجودة في الأساس يكون كالآتي:

b.ClassKey = القسم الذي تريد أن تكتب به القيمة
b.SectionKey = "المسار الذي تريد أن تكتب به القيمة"
b.ValueKey = "مفتاح القيم (اسمها)"
b.ValueType = نوع القيمة
text1.text = b.value
كما تلاحظون نفس الأسلوب مع حذف السطر الأخير لأننا لا نريد أن نكتب ولا أن نحذف ثم عكس السطر الخاص بالقيمة:
ففي البداية كنا نكتب "b.value" ثم نحدد القيمة وهذه المرة وضعنا الأداة التي ستحمل القيمة ثم وضعنا "b.value" أمامها لكي تُوضع لنا القيمة في أداة "TextBox".


الأمثلة: (تجدونها في المرفقات)

المثال الأول الذي باسم (MPEx1) - مثال يُوضح طريقة العمل الفعلية، وتجدون فيه الآتي:
أربعة أزرار:
واحد لكتابة قيمة نصية، وثاني لكتابة قيمة من نوع "DWord"، وثالث لحذف قيمة ورابع لحذف مفتاح بأكمله.
- عند الضغط على زر "كتابة قيمة من نوعString":
اذهب إلى "Start + Run" ثم اكتب "regedit" ثم اذهب إلى القسم "HKEY_CURRENT_USER" ثم اختر منه "Software" ثم ستجد مفتاحا باسم "aaaaaa" وعند الضغط عليه ستجد قيمة باسم "Test" قد كتبت ونوعها "Reg_SZ" والقيمة التي تحملها هي "تجربة ناجحة".

- عند الضغط على زر "كتابة قيمة من نوع DWord":
قم بنفس الخطوات (اذهب إلى start...) أو إذا كان "محرر مسجل النظام" مازال مفتوح اضغط على "F5" وبعدها ستلاحظ أن قيمة أخرى قد أصبحت تحت القيمة "Test" وهي القيمة "Test2" وستلاحظ أنها باللون الأزرق ونوعها هو "Reg_DWord" وتحمل القيمة التالية: "0x00000001(1)"

- عند الضغط على زر "حذف قيمة":
اذهب إلى "محرر مسجل النظام" أو اضغط "F5" وستلاحظ أن القيمة التي باسم "Test2" لم تعد موجودة "حُذفت"، وإذا أردت حذف القيمة "Test" ما عليك سوى العودة إلى المشروع والضغط على زر "حذف قيمة" مرتين ليظهر لك محرر الأوامر وهناك غير اسم القيمة "b.ValueKey" من "Test2" إلى "Test".

- عند الضغط على زر "حذف مفتاح":
ستلاحظ في "محرر سجل النظام" أن المفتاح "aaaaaa" قد زال بالكامل.

وبقليل من التجارب ستفهمون أكثر وأكثر...

المثال الثاني الذي باسم (MPEx2) - مثال يُوضح كيف نستخرج القيمة وفي نفس الوقت يُعطي بعض الأفكار التي يُمكن أن يستغل فيها مسجل النظام.
في هذا المثال التوضيحي ستجدون صندوق نص وزر واحد.
اكتبوا شيئا ما في صندوق النص، ستلاحظون أن الخط صغير ولون الخط أسود

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

وهذا أبسط أنواع الاستخدامات التي يمكن أن يستغل فيها مسجل النظام.

وكمثال: عندما تستخدم محرر النصوص "Word" فإنك تلاحظ أنه يُظهر لك أسماء آخر الملفات التي كنت تعمل عليها (ذلك يتم بنفس الطريقة)
آخر الكلمات التي بحثت عنها في حاسوبك يتم الاحتفاظ بها بنفس هذه الطريقة.
حتى كتابتك ل"Regedit" في "Start + Run" يتم الاحتفاظ بها بنفس الطريقة.

صدقني عندما تجيدون التعامل مع مسجل النظام فإنكم تخطون خطوة لا تُصدق في عالم البرمجة وستكتشفون ذلك بأنفسكم مع الوقت.

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

تحياتي
صلاح الدين بن شبيبة
 

المرفقات

  • MPEx1.zip
    4.8 KB · المشاهدات: 6
  • MPEx2.zip
    6.3 KB · المشاهدات: 11,701


محمد الفرح قال:
اوكي اخي الله يوفقك

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

ملاحظة : ليس شرطا ان يكون على مساحة مجانيه اذا كان لك مساحة غير مجانيه اركبها لك

وهاااي الخدمة فقط للمركز الاول

أخي الكريم شكرا لك
ولكني لست بحاجة لمنتدى ولا لمساحة هذا زيادة على أني لو كنت محتاجا لذلك لما انتظرت الفوز به في مسابقة، فالحمد لله أنا أجيد تصميم المواقع من تثبيت الخادم إلى تصميم أشكال المنتديات (Styles)، ولن يضرني شيء أن أتعب من أجل نفسي قليلا ;)

شكرا لك مجددا وباقي الشرح سأكمله إن شاء الله في أقرب وقت

وهنيئا لي بالفوز:d :d

تحياتي لك
 


العفو اخوي وانا ايضا سأفي بوعدي وسوف اقوم بشرح طريقة عمل منتدى وشرح مفصلا ولن أنسى أي خطوة اليوم في الليل ان شاءالله
 
عودة
أعلى