• 0
غرّام العقول

تسجيل أداة أكتيف إكس برمجياً

سؤال

السلام عليكم ورحمة الله وبركاته

أحياناً نضطر إلى استخدام المكتبات في برامجنا .. وطالما أن المكتبة مسجلة لدينا, فالبرنامج يعمل بشكل جيد, لكن المشكلة عندما ننقل البرنامج إلى جهاز العميل, عندها يجب تسجيل المكتبة في جهازه.

السؤال هو: كيف يمكن تسجيل المكتبة لدى العميل برمجياً أثناء فتح البرنامج مثلاً .. بدون أن نشق عليه بالذهاب إلى ابدأ ثم تشغيل ثم كتابة الأمر .....regsver32

أرجو ممن لديه معلومات عن هذا الموضوع أن لا يبخل علينا بالإجابة, وجزاكم الله خيراً.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

17 إجابة على هذا السؤال .

  • 0

السلام عليكم ورحمة الله وبركاته

أحياناً نضطر إلى استخدام المكتبات في برامجنا .. وطالما أن المكتبة مسجلة لدينا, فالبرنامج يعمل بشكل جيد, لكن المشكلة عندما ننقل البرنامج إلى جهاز العميل, عندها يجب تسجيل المكتبة في جهازه.

السؤال هو: كيف يمكن تسجيل المكتبة لدى العميل برمجياً أثناء فتح البرنامج مثلاً .. بدون أن نشق عليه بالذهاب إلى ابدأ ثم تشغيل ثم كتابة الأمر .....regsver32

أرجو ممن لديه معلومات عن هذا الموضوع أن لا يبخل علينا بالإجابة, وجزاكم الله خيراً.

اخي الفاضل : غرام العقول

السلام عليكم ورحمة الله وبركاته

وكل عام وانتم بخير

هل من الممكن وضع مثال على قاعدة بيانات وهذه القاعدة مرتبطة بمكتبه معينة مثل OCX او DLL مع وضع المكتبة في مجلد القاعدة !!!!

حتى يتسنى لنا عمل الكود اللازم لتسجيل المكتبة برمجيا اثناء فتح القاعدة .

بالتوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام ورحمة الله وبركاته

السيدة الفاضلة الأستاذة الدكتورة/ زهرة العبدالله

وكل عام وأنتم بألف خير وصحة وعافية

المثال المرفق هو بعض منحكم وعطاياكم

RegLib.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تفضل اخي الفاضل : غرام العقول

اولا : نحتاج الى وحدة نمطية نضع فيها هاتين الوظيفتين

الوظيفة الأولى : مهمتها التأكد هل الملف موجود في مجلد النظام ام لا فإن كان الملف موجود مسبقا فلا يوجد مشكله ويتم تسجيله فورا اما اذا لم يكن الملف موجود في مجلد النظام فهنا نحتاج الى الوظيفة الثانية لنسخه اولا الى مجلد النظام ثم تسجيله بعد ذلك


Public Function DoesFileExist(vPathAndFile As String) As Boolean
If Len(Dir$(vPathAndFile)) > 0 Then DoesFileExist = True Else DoesFileExist = False
End Function

الوظيفة الثانية : نسخ الملف الموجود في مجلد القاعدة الى مجلد النظام


Public Function CopyFile(vPathSource As String, vPathDestination As String)
Dim foOptions As SHFILEOPSTRUCT
With foOptions
.Function = FO_COPY
.From = vPathSource
.To = vPathDestination
.Flags = 0
.Flags = .Flags Or FOF_NOCONFIRMMKDIR Or FOF_NOCONFIRMATION Or FOF_SILENT
End With
SHFileOperation foOptions
End Function

ثانيا : نحتاج الى نموذج افتتاحيه للبرنامج لإستدعاء الوظائف السابقة وتسجيل الملف وسيكون عند فتح النموذج حسب الكود التالي

post-15367-063159300 1351066968_thumb.gi


Private Sub Form_Open(Cancel As Integer)
Me.TimerInterval = 3000
If Not DoesFileExist("C:\Windows\System32\DBPix20.ocx") Then
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\System32\DBPix20.ocx"
Call Shell("C:\WINDOWS\system32\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)

Else
Call Shell("C:\WINDOWS\system32\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)

End If
End Sub

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

كل هذه الإجراءات تتم خلال 3 ثواني عند فتح نموذج الشاشة الإفتتاحية ثم يتم اغلاق النموذج وفتح نموذجنا الرئيسي بدون ان يشعر المستخدم بأي شيء .


Private Sub Form_Timer()
DoCmd.Close
DoCmd.OpenForm "frmProjects"
End Sub

لا تنسانا من التقييم بارك الله بك

za-RegLib.rar

بالتوفيق

تم تعديل بواسطه zahrah
3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله بكم أستاذتنا القديرة/ أم عهود

جعل الله أيامكم كلها أعياد وأفراح.

نعم هذا هو المطلوب تماماً.

واسمحوا لي بسؤال أيضاً -أطال الله عمركم في طاعته- هل يعمل الكود السابق لجميع إصدارات الويندوز مثل فيستا, وويندوز7؟!!

مرة أخرى أشكركم جزيل الشكر, وأسأل الله أن يجعل هذا في ميزان حسناتكم, وأن يجعل الفردوس الأعلى مأواكم, والنار لمن عاداكم.

بقي لدينا النمط المعرف من قبل المستخدم المسمى

  SHFILEOPSTRUCT

لم يتم تعريفه بارك الله بكم

تم تعديل بواسطه غرّام العقول
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله بكم أستاذتنا القديرة/ أم عهود

جعل الله أيامكم كلها أعياد وأفراح.

نعم هذا هو المطلوب تماماً.

واسمحوا لي بسؤال أيضاً -أطال الله عمركم في طاعته- هل يعمل الكود السابق لجميع إصدارات الويندوز مثل فيستا, وويندوز7؟!!

مرة أخرى أشكركم جزيل الشكر, وأسأل الله أن يجعل هذا في ميزان حسناتكم, وأن يجعل الفردوس الأعلى مأواكم, والنار لمن عاداكم.

بقي لدينا النمط المعرف من قبل المستخدم المسمى

  SHFILEOPSTRUCT

لم يتم تعريفه بارك الله بكم

اخي الفاضل : غرام العقول

كود النسخ السابق يعمل بشكل صحيح وليس به اي مشكله

اذا لم يتعرف برنامج الأكسيس لديك على المتغيرات فقد يكون لديك نقص في المكتبات في النظام

ولكن لا يوجد اي مشكله

استخدم هذا الكود بدلا عن كود النسخ السابق فهذا الكود نقي 100% ولا يحتاج الى اي مكتبات او تعريفات فأمر FileCopy موجود على كل جهاز حتى ستجده في الأتاري والبلاستيشن 1 وايضا موجود على كوكب الزهره :)


Function CopyFile(vPathSource As String, vPathDestination As String) As Boolean
FileCopy vPathSource, vPathDestination
CopyFile = True
End Function

بالتوفيق

تم تعديل بواسطه zahrah
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هو كما قلتم -أستاذتي ومعلمتي- .. لقد عمل الآن المثال بشكل رائع .. لكن بعد أن قمت بتغيير اسم الملف المنسوخ والموجود في حدث عند الفتح للنموذج المنبثق.

استبدلت السطر الثاني بالسطر الأول:

'CopyFile Application.CurrentProject.Path & "\MSCOMCTL.OCX", "C:\Windows\System32\DBPix20.ocx"
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\System32\DBPix20.ocx"

=====================================

أرجو التكرم بالإجابة على السؤال التالي:

هل سيعمل الكود السابق في إصدار ويندوز7 أو فيستا دون رسائل أخطاء؟!! .. أقصد .. هل نحتاج إلى تغيير المسار Windows\System32 إلى مسار آخر في حال استخدام إصدار مختلف من ويندوز.

تقبلوا خالص التقدير والاحترام.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هو كما قلتم -أستاذتي ومعلمتي- .. لقد عمل الآن المثال بشكل رائع .. لكن بعد أن قمت بتغيير اسم الملف المنسوخ والموجود في حدث عند الفتح للنموذج المنبثق.

استبدلت السطر الثاني بالسطر الأول:

'CopyFile Application.CurrentProject.Path & "\MSCOMCTL.OCX", "C:\Windows\System32\DBPix20.ocx"
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\System32\DBPix20.ocx"

=====================================

أرجو التكرم بالإجابة على السؤال التالي:

هل سيعمل الكود السابق في إصدار ويندوز7 أو فيستا دون رسائل أخطاء؟!! .. أقصد .. هل نحتاج إلى تغيير المسار Windows\System32 إلى مسار آخر في حال استخدام إصدار مختلف من ويندوز.

تقبلوا خالص التقدير والاحترام.

بارك الله بك اخي الفاضل على التنبيه

لم انتبه للملف الأول MSCOMCTL.OCX في الكود

تم تغيير الملف الى DBPix20.ocx

كود النسخ وتسجيل المكتبات سيعمل على جميع انظمة الويندوز 32 بت ( Win 2000 - Win XP - Win 7 - Win Vista ) بدون اي مشاكل ولا رسائل اخطاء

اما على ويندوز 64 بت ( Win 7 - Win Vista ) فنحتاج فقط لتغيير مسار مجلد نظام الويندوز من System32 الى SysWOW64 بهذه الطريقة


Private Sub Form_Open(Cancel As Integer)
Me.TimerInterval = 3000
If Not DoesFileExist("C:\Windows\SysWOW64\DBPix20.ocx") Then
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\SysWOW64\DBPix20.ocx"
Call Shell("C:\WINDOWS\SysWOW64\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)

Else
Call Shell("C:\WINDOWS\SysWOW64\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)

End If
End Sub

بالتوفيق

تم تعديل بواسطه zahrah
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله بكم .. وحقق لكم كل ما تصبون إليه من الخيرات والبركات

هل أستطيع كتابة الكود السابق بهذا الشكل للتأكد من نظام الويندوز إن كان 64 أو 32 بت ثم تشغيل الكود على أساس ذلك؟!! -وأرجو أن تغفروا لي كثرة الأسئلة-:

Private Sub Form_Open(Cancel As Integer)
Me.TimerInterval = 3000
If Not DoesFileExist("C:\Windows\SysWOW64") Then
If Not DoesFileExist("C:\Windows\System32\DBPix20.ocx") Then
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\System32\DBPix20.ocx"
Call Shell("C:\WINDOWS\system32\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)

Else
Call Shell("C:\WINDOWS\system32\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)

End If

Else
If Not DoesFileExist("C:\Windows\SysWOW64\DBPix20.ocx") Then
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\SysWOW64\DBPix20.ocx"
Call Shell("C:\WINDOWS\SysWOW64\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)

Else
Call Shell("C:\WINDOWS\SysWOW64\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)
End If
End If
End Sub

تم تعديل بواسطه غرّام العقول
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سبحان الله علي خلقه

مبروك تم تجميع النقاط العشر

و طظ في المبتدئين

ان لله و ان اليه راجعون

-3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

أتمنى أن يتم الإجابة على أسئلتك, لأن في ذلك فائدة لي أيضاً

لا تخش فقدان نقاطك المتوفرة عندما تقوم بطرح سؤال .. لأنها ستعود إليك في اليوم التالي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل : غرام العقول

اذا رغبت في الكود ان يتم تحديد النسخة برمجيا بين نسخة 32 بت و 64 بت فسيكون بهذا الأمر

نحتاج الى اضافة وظيفة جديده تحدد نوع نسخة الويندوز هل هي 32 بت او 64 بت لأنه على ضوء ذلك سوف نستخدم الأوامر المناسبة لكل نسخة بهذه الطريقة

وظيفة تحديد نوع نسخة الويندوز وتوضع مع الوظائف السابقة


Public Function IsWin32OrWin64() As String
Dim proc_query As String
Dim proc_results As Object
Dim info As Object

proc_query = "SELECT * FROM Win32_Processor"
Set proc_results = GetObject("Winmgmts:").ExecQuery(proc_query)
For Each info In proc_results
IsWin32OrWin64 = info.AddressWidth & "-bit"
Next info
End Function

الآن سوف نستخدم هذه الوظيفة في حدث عند فتح نموذج الإفتتاحية بهذه الطريقة


Private Sub Form_Open(Cancel As Integer)
Me.TimerInterval = 3000
Dim OS
OS = IsWin32OrWin64()

Select Case OS
Case Is = "32-bit"
If Not DoesFileExist("C:\Windows\System32\DBPix20.ocx") Then
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\System32\DBPix20.ocx"
Call Shell("C:\WINDOWS\system32\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)
Else
Call Shell("C:\WINDOWS\system32\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)
End If

Case Is = "64-bit"
If Not DoesFileExist("C:\Windows\SysWOW64\DBPix20.ocx") Then
CopyFile Application.CurrentProject.Path & "\DBPix20.ocx", "C:\Windows\SysWOW64\DBPix20.ocx"
Call Shell("C:\WINDOWS\SysWOW64\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)
Else
Call Shell("C:\WINDOWS\SysWOW64\regsvr32 DBPix20.ocx /s", vbMinimizedNoFocus)
End If
End Select
End Sub

لاحظ معي في الكود اننا عملنا Select Case OS للنظام فإن كان Case Is = "32-bit" نضع له مجلد النظام System32 وان كان Case Is = "64-bit" نضع له مجلد النظام SysWOW64

الملف بعد التعديل النهائي

za-RegLib-LAST.rar

بالتوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أستاذتي الفاضلة الدكتورة/ زهرة العبدالله

يعجز اللسان عن الشكر .. لكني لا أعجز عن الدعاء لكم .. أسأل الله الكريم رب العرش العظيم في هذا اليوم العظيم يوم الوقوف بعرفة أن يجعل الفردوس الأعلى مأواكم, وأن ينيلكم أسمى وأغلى أمانيكم في الدنيا والآخرة, إنه وليّ ذلك والقادر عليه.

تمت الإجابة .. مع الشكر الجزيل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أستاذتي الفاضلة الدكتورة/ زهرة العبدالله

يعجز اللسان عن الشكر .. لكني لا أعجز عن الدعاء لكم .. أسأل الله الكريم رب العرش العظيم في هذا اليوم العظيم يوم الوقوف بعرفة أن يجعل الفردوس الأعلى مأواكم, وأن ينيلكم أسمى وأغلى أمانيكم في الدنيا والآخرة, إنه وليّ ذلك والقادر عليه.

تمت الإجابة .. مع الشكر الجزيل

بارك الله بك أخي عزام على هذه المشاركة الطيبة

اختنا الفاضلة الدكتورة زهرة العبد الله

السلام عليكم ورحمة الله وبركاته

كل عام وأنت وجميع أحبابك بألف خير

تقبل الله منا ومنكم صالح الأعمال وجزاك الله خير الجزاء على هذا العمل الطيب والمبارك

كل عام والجميع بألف خير

تم تعديل بواسطه adnan94
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا رب بحق هذا اليوم يوم الوقوف علي عرفات

اجعل اسئلتي سهله لي و اجعلني لا احتاج لاحد ما دام لا يساعدني احد

يا رب انك الكريم الحليم العظيم

-1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اختنا الفاضلة الدكتورة زهرة العبد الله

السلام عليكم ورحمة الله وبركاته

تقبل الله منا ومنكم صالح الأعمال وجزاك الله خير الجزاء على هذا العمل الطيب والمبارك

اما بعد سؤال ؟

هل ممكن تخفيض الامان فى ويندوز سفن بالكود من اكسيس مثال تخفيض الامان فى الافيس ؟؟؟؟؟؟؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سلام عليكم  

 

 

عندي مشكله في اعادة الربط الصور  عند نسخه او نقله لجهاز اخر بعض الاحيان تشتغل 100% وبعض الاحيان لزم اعيد ربطاها صوره صوره  علما اني لم اغير المسار ولا 

تم تعديل بواسطه الباشق1
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سلام عليكم   البرنامج مايشتغل معي في وندوز 10 و 8 كيف الطريقه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .