الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تسجيل ملف OCX

مغلق
بدأه innosys في 9 أكتوبر 2001 · 7 رد · 876 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أكتب برنامج باستخدام MS Access 97

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

المشكلة هي انني عند انزال البرنامج على جهاز اخر لايحوي ComCtl32.ocx فإن الـ TreeView لاتعمل ويجب ان اقوم بانزال الملف OCX ضمن الSystem والقيام بعملية Register للملف Ocx

هل هناك من Code يساعدني على تسجيل هذا الملف بشكل الي

الرجاء المساعدة

السلام عليكم

#2

هذه المشكلة كنت أفكر فيها منذ زمن وقد واجهتني وكان أسرع حل عندي هو تثبيت المراجع من محرر الوحدة النمطية يعني يدوي .

أولا جرب هل إذا نسخت الملف ComCtl32.ocx الى System انحلت المشكلة مباشرة أم لابد من تسجيل الملف في الريجستي .

أفضل أن تجرب البرنامج على جهاز لم يتم تسجيل ComCtl32.ocx في الريجستي .

اكتب النتيجة لنرى كيفية الحل .

ولك تحياتي

#3

لقد جربت نسخه فقط ولم انجح

لابد من تسجيله

شكرا لك واتمنى ان اجد حلا لهذه المشكلة

#4

أسهل وأسرع طريقة بعد نسخ العنصر لمجلد System هي :

Shell "C:WindowsSystemRegsvr32.exe C:WindowsSystemاسم العنصر.ocx", vbNormalFocus

ولكن يعيب هذه الطريقة التحديد المسبق لدليل الوندوز وقد يكون مختلفا في الجهاز الثاني .

طريقة ثانية بمعرفة مسار مجلد System والقرص الذي تنسخ الملف منه ثم نسخه إلى مجلد System ثم تسجيله :

أولا نسخ العنصر لمجلد System ويلزمك لذلك معرفة المجلد والقرص باستخدام دالة API :

في أعلى الوحدة النمطية لنموذج ضع :

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Const Max_Path=260

ولمعرفة المجلد اكتب :

Dim tmp As string

tmp=space$(Max_Path)

SystemDir = Left$(tmp,GetSystemDirectory(tmp,Max_Path))

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

أسرع طريقة لمعرفة رمز محرك الأقراص :

Left(Application.CurrentDb.Name, 3)

بقي كود النسخ انظر الرابط التالي :

http://arabteam.nicmatic.com/vb/showthread...3?threadid=4366

تجميع الكود :

Dim tmp As String

Dim رمز_القرص As String

Dim fs

tmp = Space$(Max_Path)

SystemDir = Left$(tmp, GetSystemDirectory(tmp, Max_Path))

رمز_القرص = Left(Application.CurrentDb.Name, 3)

Set fs = CreateObject("Scripting.FileSystemObject")

fs.CopyFile رمز_القرص & "اسم العنصر.ocx", SystemDir & "اسم العنصر.ocx", True

Shell SystemDir & "Regsvr32.exe " & SystemDir & "اسم العنصر.ocx", vbNormalFocus

End Sub

إذا ظهرت الرسالة التالية :

DllRegisterServer C:WINDOWSSYSTEMاسم العنصر.ocx succeeded

فمعناها أنه تم تسجيل العنصر بنجاح .

ولا تنسى أنني افترضت أنك تشغل هذا الكود من القرص الموجود عليه الملف OCX ، والملف OCX موجود على القرص مباشرة وليس داخل مجلد .

يتبقى مسألة هل تحتاج إلى فتح الوحدة النمطية بعد تسجيل العنصر لعمل مرجع أو صلة References لهذا العنصر ، آمل الإجابة .

ولك تحياتي

#5

لقد وجدت الحل

Public Declare Function RegComCtl32 Lib "ComCtl32.OCX" _

Alias "DllRegisterServer" () As Long

Public Declare Function UnRegComCtl32 Lib "ComCtl32.OCX" _

Alias "DllUnregisterServer" () As Long

Public Const S_OK = &H0

Sub RegisterComCtl32()

On Error GoTo Err_Registration_Failed

If RegComCtl32 = S_OK Then

MsgBox "Registered Successfully"

Else

MsgBox "Not Registered"

End If

Exit Sub

Err_Registration_Failed:

MsgBox "Error: " & Err.Number & " " & Err.Description

End Sub

Sub UnRegisterComCtl32()

On Error GoTo Err_Unregistration_Failed

If UnRegComCtl32 = S_OK Then

MsgBox "Unregistered Successfully"

Else

MsgBox "Not Unregistered"

End If

Exit Sub

Err_Unregistration_Failed:

MsgBox "Error: " & Err.Number & " " & Err.Description

End Sub

ارجو منك تجربته فقد جربته ونجح تماما

#6

الأخ innosys

كود ممتاز وطريقة سريعة ، الله يعطيك العافية .

وقد جربته على عنصر آخر وقام بتسجيله .

أعيد السؤال السابق إذا لم يكن للعنصر مرجع مسبق في القاعدة هل يمكن إظهاره ضمن مراجع القاعدة وهل إذا تغير مسار مجلد System تأثير في ذلك .

أرجو إذا كان لديك إجابة أو أن تقوم بالتجربة على جهاز آخر لنعرف ذلك لأهميته .

ولك تحياتي

#7

السلام عليكم

لم افهم القصد من سؤالك

ماذا تقصد بمرجع مسبق في القاعدة

ومالفائدة من إظهاره ضمن مراجع القاعدة اذا كنت لااريد استخدامه

وطبعا يجب ان يكون ضمن ال مجلد System

والسلام عليكم

#8

ما قصدته من السؤال عندما تسجل عنصر بالكود الذي كتبته على جهازك وتعمل له مرجع ثم قمت بنسخ البرنامج لجهاز آخر وقمت بتسجيل بالطريقة السابقة باستخدام الكود هل يلزم أن تذهب لمحرر الوحدة النمطية ثم قائمة أدوات ثم مراجع لاختياره ضمن المراجع الموجودة هذا ما قصدته من سؤالي .

أما السؤال عن مجلد System فقصدت به أنه إذاكان جواب السؤال السابق لا يلزم ففي حالة اختلاف مسار الوندوز في الجهاز الأول عن مساره في الجهاز الثاني هل لذلك تأثير .

ارجو أن لا أكون أزعجتك بهذه الأسئلة ولكن من باب الاستيضاح والفائدة .

ولك تحياتي

هذا الموضوع مغلق.

مواضيع مشابهة