19-10-12, 10:31 AM
والشفرة اختصاراً ستكون كالتالي :
وهذا الاجراء هو الذي يقوم بالعمل ويمكنك ان تضعه داخل برنامجك الذي تريد تسجيله ولكي تستدعي هذا الامر يمكن ان نكتب التالي :
في السطر السابق سوف نكون قد اضفنا نوع جديد من الملفات وامتداده هو rgd ويقوم بتشغيله البرنامج Test.exe ووصف هذا النوع من الملفات هو Rgheed Special Files وطبعاً ايقونه سوف تكون ايقونة البرنامج test.exe .....
طبعاً هذا جميل جداً ويمكنك ان تضعه في الحدث Load التابع للفورم بحيث يقوم بالتسجيل عند تشغيل الفورم ... لكن ما الذي تغير الان بعد الاضافة ؟؟؟
اذا قمت بانشاء ملف جديد وجعلت امتداده rgd فسوف تلاحظ ان الملف اصبح يحمل ايقونة برنامجك وانك اذا نقرت عليه مزدوجاً سوف تجد ان برنامجك قد عمل مباشرة ولكن البرنامج يعمل بالشكل الاعتيادي فما الفرق اذا عندما انقر على البرنامج الاصلي او على احد الملفات التابعة له ؟؟؟
في الواقع انه في البرامج الاخرى تجد انك اذا نقرت على اختصار البرنامج الموجود في القائمة ابدء يعمل البرنامج ( مثلاً المفكرة ) ولكنها تكون خالية اي لا تحتوي على ملف مفتوح بينما عندما ننقر على ملف من النوع txt فان المفكرة تعمل مباشرة لكن مع فرق بسيط هو انها ليست خالية بل ان الملف الذي نقرت عليه قد تم عرض محتوياته داخلها ...
اذاّ كيف عرفت المفكرة اننا نقرنا على ملف معبن ثم قامت بعرضه بينما عندما نقرنا على البرنامج فقط بدون ملف txt تم فتح المفكرة ولكنها لم تعرض شيئاً ؟؟ ...
الذي يحدث هو ان الفيجوال يحتوي على امر معرف فيه هو command وهذا الامر اذا نقرنا على البرنامج مباشرة تكون قيمته "" بينما اذا نقرنا على ملف تابع لبرنامجنا مثل الملف rgd في مثالنا السابق فان هذا الامر تكون قيمته هي اسم الملف المنقور عليه ... فاذا كنا نريد ان نضع محتويات الملف الذي ننقر عليه داخل مربع نص نقوم بالتالي :
ما عملناه في السطر السابق هو اننا قمنا بالتأكد من ان المتغير Command ليس فارغاً (حيث انه اذا كان فارغاً فان هذا يعني انه ثم النقر على البرنامج وليس على ملف تابع له) واما اذا كان غير فارغ فمعناه اننا نقرنا على ملف تابع له وبالتالي فان اسم الملف الذي نقرنا عليه موجود في المتغير Command لذى قمنا بعدها بفتح الملف ثم قرأة كل محتوياته الى داخل المتغير S وبعدها قمنا بعرض المتغير S في مربع النص Text1 وبالتالي فان جميع محتويات الملف ثم عرضها ....
ان المفاهيم السابقة مهمة جداً لنا كمبرمجين حيث انه يجب علينا ان نتعامل مع الملفات بشكل اكثر احترافية ... كما اني اود ان انوه الى ان وظائف الامر Command ليس فقط عرض اسم الملف الذي تم النقر عليه وانما تمرير توابع الى داخل برنامجنا بحيث يقوم البرنامج بالتصرف بحسب العامل الذي مرر اليه بواسطة الامر Command ونحن هنا كان التابع المرر الى برنامجنا هو اسم الملف الذي تم النقر عليه لذى فان برنامجنا الان يقوم باحد سلوكين اعتماداً على قيمة Command ... السلوك الاول هو ان يعمل بشكل اعتيادي في حالة ان الامر Command كان خالياً ... والسلوك الآخر هو عرض محتويات الملف اذا كان الامر Command غير خالي (اي انه يحتوي على اسم الملف) ....
ويمكن بالطبع جعل التابع Command يمرر قيم اخرى تتحكم في سلوك برنامجنا وبالتالي يجب على البرنامج ان يقوم بالفحص اعتماداً على قيمة Command ثم تقرير العمل او السلوك المطلوب من البرنامج بعدها ....
اتمنى ان تصل اليكم الفكرة ..... اخوكم رغيد ....
PHP كود :
code:Sub NewFileType(ProgramPath As String, ByVal Extension As String, Description As String)
Dim W As Object
Dim E As String
Set W = CreateObject("Wscript.shell")
If Left(Extension, 1) <> "." Then
E = "." & Extension & "\"
Else
E = Extension & "\"
Extension = Mid(Extension, 2)
End If
W.regwrite "HKCR\" & E, Extension & " File"
W.regwrite "HKCR\" & Extension & " File\", Description
W.regwrite "HKCR\" & Extension & " File\Default Icon\", ProgramPath
W.regwrite "HKCR\" & Extension & " File\Shell\Open\Command\", ProgramPath & " %1"
W.regwrite "HKCR\" & Extension & " File\Shell\", "Open"
End Sub
وهذا الاجراء هو الذي يقوم بالعمل ويمكنك ان تضعه داخل برنامجك الذي تريد تسجيله ولكي تستدعي هذا الامر يمكن ان نكتب التالي :
PHP كود :
code:NewFileType "C:\data\Test.exe" , "rgd" , "Rgheed Special Files"
في السطر السابق سوف نكون قد اضفنا نوع جديد من الملفات وامتداده هو rgd ويقوم بتشغيله البرنامج Test.exe ووصف هذا النوع من الملفات هو Rgheed Special Files وطبعاً ايقونه سوف تكون ايقونة البرنامج test.exe .....
طبعاً هذا جميل جداً ويمكنك ان تضعه في الحدث Load التابع للفورم بحيث يقوم بالتسجيل عند تشغيل الفورم ... لكن ما الذي تغير الان بعد الاضافة ؟؟؟
اذا قمت بانشاء ملف جديد وجعلت امتداده rgd فسوف تلاحظ ان الملف اصبح يحمل ايقونة برنامجك وانك اذا نقرت عليه مزدوجاً سوف تجد ان برنامجك قد عمل مباشرة ولكن البرنامج يعمل بالشكل الاعتيادي فما الفرق اذا عندما انقر على البرنامج الاصلي او على احد الملفات التابعة له ؟؟؟
في الواقع انه في البرامج الاخرى تجد انك اذا نقرت على اختصار البرنامج الموجود في القائمة ابدء يعمل البرنامج ( مثلاً المفكرة ) ولكنها تكون خالية اي لا تحتوي على ملف مفتوح بينما عندما ننقر على ملف من النوع txt فان المفكرة تعمل مباشرة لكن مع فرق بسيط هو انها ليست خالية بل ان الملف الذي نقرت عليه قد تم عرض محتوياته داخلها ...
اذاّ كيف عرفت المفكرة اننا نقرنا على ملف معبن ثم قامت بعرضه بينما عندما نقرنا على البرنامج فقط بدون ملف txt تم فتح المفكرة ولكنها لم تعرض شيئاً ؟؟ ...
الذي يحدث هو ان الفيجوال يحتوي على امر معرف فيه هو command وهذا الامر اذا نقرنا على البرنامج مباشرة تكون قيمته "" بينما اذا نقرنا على ملف تابع لبرنامجنا مثل الملف rgd في مثالنا السابق فان هذا الامر تكون قيمته هي اسم الملف المنقور عليه ... فاذا كنا نريد ان نضع محتويات الملف الذي ننقر عليه داخل مربع نص نقوم بالتالي :
PHP كود :
code:Private Sub Form_Load() Dim F As Integer Dim S As String NewFileType "C:\data\Test.exe", "rgd", "Rgheed Special Files" If Command <> "" Then F = FreeFile Open Command For Binary As F S = spcae(LOF(F)) Get #F, 1, S Close F Text1.Text = S End IfEnd Sub
ما عملناه في السطر السابق هو اننا قمنا بالتأكد من ان المتغير Command ليس فارغاً (حيث انه اذا كان فارغاً فان هذا يعني انه ثم النقر على البرنامج وليس على ملف تابع له) واما اذا كان غير فارغ فمعناه اننا نقرنا على ملف تابع له وبالتالي فان اسم الملف الذي نقرنا عليه موجود في المتغير Command لذى قمنا بعدها بفتح الملف ثم قرأة كل محتوياته الى داخل المتغير S وبعدها قمنا بعرض المتغير S في مربع النص Text1 وبالتالي فان جميع محتويات الملف ثم عرضها ....
ان المفاهيم السابقة مهمة جداً لنا كمبرمجين حيث انه يجب علينا ان نتعامل مع الملفات بشكل اكثر احترافية ... كما اني اود ان انوه الى ان وظائف الامر Command ليس فقط عرض اسم الملف الذي تم النقر عليه وانما تمرير توابع الى داخل برنامجنا بحيث يقوم البرنامج بالتصرف بحسب العامل الذي مرر اليه بواسطة الامر Command ونحن هنا كان التابع المرر الى برنامجنا هو اسم الملف الذي تم النقر عليه لذى فان برنامجنا الان يقوم باحد سلوكين اعتماداً على قيمة Command ... السلوك الاول هو ان يعمل بشكل اعتيادي في حالة ان الامر Command كان خالياً ... والسلوك الآخر هو عرض محتويات الملف اذا كان الامر Command غير خالي (اي انه يحتوي على اسم الملف) ....
ويمكن بالطبع جعل التابع Command يمرر قيم اخرى تتحكم في سلوك برنامجنا وبالتالي يجب على البرنامج ان يقوم بالفحص اعتماداً على قيمة Command ثم تقرير العمل او السلوك المطلوب من البرنامج بعدها ....
اتمنى ان تصل اليكم الفكرة ..... اخوكم رغيد ....
متغيب

