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

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184)
+--- الموضوع : التعامل مع الرجستري باستخدام فيجوال بيسك دوت نت (/showthread.php?tid=4835)



التعامل مع الرجستري باستخدام فيجوال بيسك دوت نت - RaggiTech - 02-10-12

كاتب الموضوع : حميد ربيع


بسم الله الرحمان الرحيم

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


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


للرجستري استعملات عدة من بينها حفظ اعدادات البرنامج و حفظ بعض القيم لاستعمالها لاحقا و غيرها ...

أولا: قم بانشاء مشروع جديد بعنوان : lesson Registry .
وصمم الفورم علي الشكل التالي :


قم بتغير خاصية Name للنص الأول الي UserName و النص الثاني الي PassWord .
+ كتابة الشيفرات .
* أولا يجب عليك استدعاء مجال الأسماء Microsoft.Win32
وذلك علي الشكل التالي
كود :
[color=blue]Imports[/color] Microsoft.Win32
* ثانيا تعريف متغير سنستعمله للوصول الي الرجستري :

كود :
Dim RecSami As RegistryKey = Registry.CurrentUser.CreateSubKey("Key Sami")
كما تلاحظ عرفت متغير باسم RecSami وأنشئت مفتاح باسم Key Sami داخل CurrentUser , ويمكنك إختيار ما تشاء من الأماكن لانشاء المفتاح كما هو موضح في الصورة أسفله .


+ كتابة الشيفرات :
دوبل كليك علي زر إنشاء حساب أو Create Account .
وبعد ذلك نقوم بكتابة الشفرة التالية :


كود :
If UserName.Text = "" Or PassWord.Text = "" Then
MessageBox.Show(" The UserName Or PassWord Text Is Empty Please Try Again", "Create Account")
Else
RecSami.SetValue("Username", UserName.Text)
RecSami.SetValue("PassWord", PassWord.Text)
End If
+إذا كان عندك بعض الغموض اقرأ تحليل الشيفرة وإذا كنت عكس ذلك فأكمل المشوار.
+تحليل الشيفرة:


كود :
If UserName.Text = "" Or PassWord.Text = "" Then
MessageBox.Show(" The UserName Or PassWord Text Is Empty Please Try Again", "Create Account")
اذا كان نص كتابة اسم المستخدم أو رمز الدخول أو كلاهما معا فارغا سيضهر البرنامج رسالة تخبر المستخدم أن نص كتابة اسم المستخدم أو رمز الدخول فارغ .

كود :
Else
RecSami.SetValue("Username", UserName.Text)
RecSami.SetValue("PassWord", PassWord.Text)
End If
ثانيا وبعد أن تحقق من نصوص الكتابة ينشئ حساب باسم Key Sami ويضع فيه اسم المستخدم و رمز الدخول الموجودةفي نصوص الكتابة.

وهذه هي النتيجة :


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

الشيفرات الخاصة بالفورم1 ستكون علي الشكل التالي :

كود :
Imports Microsoft.Win32
Public Class Form1
Dim RecSami As RegistryKey = Registry.CurrentUser.CreateSubKey("Key Sami")

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'code Create Account
If UserName.Text = "" Or PassWord.Text = "" Then
MessageBox.Show(" The UserName Or PassWord Text Is Empty Please Try Again", "Create Account")
Else
RecSami.SetValue("Username", UserName.Text)
RecSami.SetValue("PassWord", PassWord.Text)
End If

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'code cancel
End
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


'code button Ok
If UserName.Text = "" Or PassWord.Text = "" Then
MessageBox.Show(" The UserName Or PassWord Text Is Empty Please Try Again", "Enter To My Account")
Else
If UserName.Text = RecSami.GetValue("UserName") And PassWord.Text = RecSami.GetValue("PassWord") Then
Form2.Show()
Me.Hide()
Else
MessageBox.Show("The UserName Or PassWord Text Is Incorrect Please Try Again", "Enter To My Account")
End If
End If

End Sub
End Class
ثانيا:
أضف فورم 2 وصممه علي الشكل التالي:


قم بتغير خاصية Name للنص الأول الي UserName و النص الثاني الي PassWord و النص التالث الي txtWrite
كما العادة استدعي مجال الأسماء Microsoft.Win32
وقم بتعريف نفس المتغير الذي استعملناه في الفورم1


كود :
Dim RecSami As RegistryKey = Registry.CurrentUser.CreateSubKey("Key Sami")
+ وفي الفورم لود (Form2_Load ) أكتب الشفرات التالية :

كود :
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

On Error Resume Next
UserName.Text = RecSami.GetValue("UserName")
PassWord.Text = RecSami.GetValue("PassWord")
txtWrite.Text = RecSami.GetValue("txtWrite")

End Sub
ومحتواها أننا نعرض اسم المستخدم و رمز الدخول في أداتي النص 1 و2 و النص المحفوظ في الرجستري مسبقاالي أداة النص 3 "txtWrite"
+ الأن نضع شفرة الحفظ Save .


كود :
RecSami.SetValue("txtWrite", txtWrite.Text)
و الهدف منها حفظ ما تغير في أداة txtWrite.Text

*ربما قد تقول لي ماذا لو نسي المستخدم الضغط علي زر الحفظ وأغلق البرنامج وكان قد عدل علي أدة النص ، أقول لك مصيبة فلن يتم حفظ ما تغير ، ولتجنب هذا المشكل أقترح عليك حلا يمنع وقوع هذا الخطئ .
+ استعرض أحداث الفورم و أنقر علي FormClosed وأكتب الشفرة التالية :


كود :
Private Sub Form2_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

RecSami.SetValue("txtWrite", txtWrite.Text)

End Sub


بهذا عند اغلاق المستخدم البرنامج سيتم حفظ ما تغير .
+ كتابة الشفرة الخاصة باستعراض الصورة Browse
أولا أضف أداة OpenFileDialog وغير خاصية Name الي open


كود :
open.Title = "Browse Picture"
open.ShowDialog()
Picture.Image = Image.FromFile(open.FileName)
RecSami.SetValue("Picture", open.FileName)
+ وفي الفورم لود أضف الشفرة التالية :

كود :
Picture.Image = Image.FromFile(RecSami.GetValue("Picture"))
+ مناقشة الشفرات السابة :
أداة OpenFileDialog تستخدم لاستعراض الملفات و الصور أي جلبها من علي الحسوب ، أود أن أشرح لك تفاصيل هذه الأداة ولكن لا أود أن أضيف سطور إضافية لهذا الكتاب لأنه يوجد الكثير لأخبرك عن هذه الأداة، وفي اعتقادي أنك ستفهم الشفرة السابة بمجهودك الخاص .
+ والنتيجة ستون علي الشكل التالي :


الشيفرات الخاصة بالفورم2 ستكون علي الشكل التالي :

كود :
Imports Microsoft.Win32
Public Class Form2
Public RecSami As RegistryKey = Registry.CurrentUser.CreateSubKey("Key Sami")
Private Sub Form2_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

RecSami.SetValue("txtWrite", txtWrite.Text)

End Sub

Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
On Error Resume Next
UserName.Text = RecSami.GetValue("UserName")
PassWord.Text = RecSami.GetValue("PassWord")
txtWrite.Text = RecSami.GetValue("txtWrite")
Picture.Image = Image.FromFile(RecSami.GetValue("Picture"))

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'code button Exit
End

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'code button Empty
txtWrite.Text = ""

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'code button save
RecSami.SetValue("txtWrite", txtWrite.Text)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
open.Title = "Browse Picture"
open.ShowDialog()
Picture.Image = Image.FromFile(open.FileName)
RecSami.SetValue("Picture", open.FileName)

End Sub
End Class

تحميل المشروع

أرفقت مشروعين الاول ب vb.net 2005 ; والثاني ب vb.net 2008
تحميل الدرس
2005
2008