سأشرح لكم طريقة سهلة للغايه لربط برنامجك بإمتداد معين مثل برنامج Winamp وملفات mp3 مثلا .... ساستخدم الدوال RegCreateKey و RegSetValue قم بتشغيل فيجول بيسك على مشروع جديد إنسخ هذه الاعلانات إلى قسم الإعلانات فى الفورم الجديد Private Declare Function RegCreateKey Lib "advapi32.dll" _ Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal _ lpSubKey As String, phkResult As Long) As Long هذه الدالة تتطلب ثلاث توابع التابع الاول hKey وهو يمثل المفتاح الرئيسى أما التابع الثانى lpSubKey فيمثل المفتاح الفرعى المشتق من المفتاح الاول وهذا المفتاح هو الذى سيتم إنشاءة أما المفتاح الثالث فيمثل مؤشر للمفتاح الذى تم إنشاءة وسنستخدمة فى الدالة الثانية ( حرف P عندما يأتى فى دالة من دوال API فهو يدل على مؤشروهى كلمة مشهورة جداً فى لغة السى وهى تمثل عنوان فى الذاكرة ) Private Declare Function RegSetValue Lib "advapi32.dll" _ Alias "RegSetValueA" (ByVal hKey As Long, ByVal _ lpSubKey As String, ByVal dwType As Long, ByVal _ lpData As String, ByVal cbData As Long) As Long أما هذه الدالة فهى تتطلب خمس متغيرات الاول والثانى كما فى الدالة السابقة أما الثالث dwType فهو يحدد نوع البيانات التى سيتم وضعها فى المفتاح الفرفعى أما التابع الرابع lpData فيمثل مؤشر إلىالتابع الثالث أما cbData فيحدد طول البيانات فى التابع الثانى ثم إنسخ هذه الثوابت أيضاً Const ERROR_SUCCESS = 0& Const ERROR_BADDB = 1& Const ERROR_BADKEY = 2& Const ERROR_CANTOPEN = 3& Const ERROR_CANTREAD = 4& Const ERROR_CANTWRITE = 5& Const ERROR_OUTOFMEMORY = 6& Const ERROR_INVALID_PARAMETER = 7& Const ERROR_ACCESS_DENIED = 8& Private Const HKEY_CLASSES_ROOT = &H80000000 Private Const MAX_PATH = 260& Private Const REG_SZ = 1 هذه الثوابت أعتقد أن معناها واضح ثم إنسخ هذا الكود إلى قسم الاعلانات فى الفورم وأضغط Enter فى يتم إنشاء الدالة التى ستقوم بالعمل Private Sub AssociateFileExtension(Extension _ As String, PathToExecute As String, ApplicationName _ As String) ثم ضع هذه الإعلانات Dim sKeyName As String Dim sKeyValue As String . Dim ret& . Dim lphKey& ألأن سنبدأ العمل فى الدالة....... فأنظر إلى هذا الكود sKeyName = ApplicationName فى هذا المتغير نخزن إسم البرنامج الذى تمرره لنا الدالة وهو سيكون المفتاح الاساسى sKeyValue = ApplicationName فى هذا المتغير نخزن إسم البرنامج الذى تمرره لنا الدالة وهو سيكون المفتاح الفرعى ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&) هنا نستدعى الدالة التى تنشأ المفتاح الاساسى فى التسجيل تحت المفتاح HKEY_CLASSES_ROOT ثم تضع مؤشر لهدا المفتاح فى المتغير &lphKey الذى سنستخدمة فى الخطوة الثانية ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&) فى هذه الخطوة ننشيء المفتاح الخاص بالبرنامج أو بمعنى أدق نضع الاسم فى هذا المفتاح sKeyName = "." & Extension sKeyValue = ApplicationName ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&) ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&) فى هذه الخطوة ننشيء المفتاح الخاص بالإمتداد الذى سيربط بالبرنامج sKeyName = ApplicationName sKeyValue = PathToExecute & " %1" ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&) ret& = RegSetValue&(lphKey&, "shellopencommand", REG_SZ, sKeyValue, MAX_PATH) فى هذه الخطوة سسنشيء المفتاح الذى سيفتح الطبيق عندما يضغط المستخدم ضغطة مزدوجة على أى ملف لة الإمتداد الذى ربطناه وهذه هى الخطوة الاخيرة وبذلك تصبح الدالة بالصورة الاتية Private Sub AssociateFileExtension(Extension _ As String, PathToExecute As String, ApplicationName _ As String) Dim sKeyName As String Dim sKeyValue As String Dim ret& Dim lphKey& sKeyName = ApplicationName sKeyValue = ApplicationName ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&) ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&) sKeyName = "." & Extension sKeyValue = ApplicationName ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&) ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&) sKeyName = ApplicationName sKeyValue = PathToExecute & " %1" ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&) ret& = RegSetValue&(lphKey&, "shellopencommand", REG_SZ, sKeyValue, MAX_PATH) End Sub وعندما ترغب فى إستخدام هذه الدالة ( أو بمعنى أدق هذا الإجراء ) تتبع الصورة الأتية AssociateFileExtension "إمتداد الملف ( ثلاث حروف فقط )" , "مسار البرنامج الذى سيفتح هذا الملف ", " إسم البرنامج" مثال بفرض أن إمتداد البرنامج هو nor ومسار البرنامج هو "C: test" وإسم البرنامج هو Project1.exe فيكون إستخدام الإجراء كالأتى AssociateFileExtension "nor"," C: test " , " Project1.exe"
ف