تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
حل مشكلة نقص ملفات ال ocx + تسجيلة - مهم لكل مبرمج
#1
السلام عليكم اخواني عساكم بخير 

موضوع يمكن بعض الاخوة يحتاجوه عن تشغيل الادوات في جهاز كمبيوتر اخر 

للامانه هذا موضوع وجدته في جهازة ولا اعرف اسم الاخ لكي اضع اسمه عليه 

حل مشكلة نقص ملفات ال ocx + تسجيلة - مهم لكل مبرمج 

--------------------------------------------------------------------------------

السلام عليكم ورحمة الله وبركاتة
مهم لكل مبرمج : حل مشكلة نقص ملفات ال ocx + تسجيلة 
اكيد كل منا بيستخدم ادوات خارجية من نوع ocx و dll وعند تشغيلة على جهازة تعمل بشكل جيد وعند نقل البرنامج الى جهاز اخر يحدث مشكلة انه الملفات الخاصه بالمكتبات المستخدمه غير ناقصة
وفى بعض الاحيان بترسل البرنامج عن طريق الايميل الى المستخدم الذى ليس لدية الخبره فى نقل الملفات الى الروت الموجود بالويندوز اذا يوجد مشكلة

ما هو الحل :
1 - تجميع الملفات الخارجية المستخدمة فى البرنامج
2 - تحميل الملف المرفق وهو عبارة عن ملف باتش ( Register.Ocx.bat ) 
يقوم بنقل الملفات الخارجية المستخدمة ( ocx ) الى هذا المسار C:\WINDOWS\system32
وايضا يقوم بعمل تسجيل له فى الرجيسترى وهكذا تكون انتهيت من المشكلة
فقط كل ما عليك تغيير اسماء الملفات الموجودة فى الباتش الى اسماء الملفات التى تريد نقلها وتسجيلها


الملفات المرفقة
.rar   Register[1].Ocx.rar (الحجم : 259 بايت / التحميلات : 358)
اعز معلمين :
1) Ahmed _Mansoor
2) sniper.ps 
3) myalsailamy
4) ahmedabdelaliem 
5) sendbad100
6)Amir_alzubidy

الرد }}}
#2
بارك الله فيك
و جزاك الله خير
شكرا جزيلا
الرد }}}
تم الشكر بواسطة: awidan76 , asemshahen5
#3
العفو اخواني مع ان الملف وجته في جهازي وله فتره قلت ارفعه للاخوة في هذا المنتدى الرائع
اعز معلمين :
1) Ahmed _Mansoor
2) sniper.ps 
3) myalsailamy
4) ahmedabdelaliem 
5) sendbad100
6)Amir_alzubidy

الرد }}}
تم الشكر بواسطة:
#4
بارك الله فيك
الرد }}}
تم الشكر بواسطة: awidan76 , asemshahen5
#5
توجد لدي أكواد تسجيل الأدوات برمجيا بدون اي مشكلة أسرع وأفضل
جديد معكم . محترف فجوال بيزك

ضع هذا في موديول جديد


Option Explicit

Public Declare Function LoadLibraryRegister _
   Lib "kernel32" Alias "LoadLibraryA" ( _
   ByVal lpLibfName As String) As Long

Public Declare Function FreeLibraryRegister _
   Lib "kernel32" Alias "FreeLibrary" ( _
   ByVal hLibModule As Long) As Long

Public Declare Function GetProcAddressRegister _
   Lib "kernel32" Alias "GetProcAddress" ( _
   ByVal hModule As Long, _
   ByVal lpProcName As String) As Long

Public Declare Function CreateThreadForRegister _
   Lib "kernel32" Alias "CreateThread" ( _
   lpThreadAttributes As Any, _
   ByVal dwStackSize As Long, _
   ByVal lpStartAddress As Long, _
   ByVal lpparameter As Long, _
   ByVal dwCreationFlags As Long, _
   lpThreadID As Long) As Long

Public Declare Function GetExitCodeThread _
   Lib "kernel32" ( _
   ByVal hThread As Long, _
   lpExitCode As Long) As Long

Public Declare Sub ExitThread _
   Lib "kernel32" ( _
   ByVal xc As Long)

Public Declare Function CloseHandle _
   Lib "kernel32" ( _
   ByVal hObject As Long) As Long

Public Declare Function WaitForSingleObject _
   Lib "kernel32" ( _
   ByVal hHandle As Long, _
   ByVal dwMilliseconds As Long) As Long
'===========================================================



Public Function RegX(fName$, func%) As Integer
   Dim regLib&, process&, succeed&
   Dim h1&, xc&, id&
   Dim p$
   
   Select Case func
       Case 0: p = "DllUnregisterServer"
       Case 1: p = "DllRegisterServer"
       Case Else: RegX = 0
                   Exit Function
   End Select

   regLib = LoadLibraryRegister(fName)
   If regLib = 0 Then
       RegX = 1
       Exit Function
   End If
       
   process = GetProcAddressRegister(regLib, p)
   
   If process = 0 Then
       RegX = 2
   Else
       h1 = CreateThreadForRegister(ByVal 0&, 0&, _
           ByVal process, ByVal 0&, 0&, id)
       If h1 = 0 Then
           RegX = 3
       Else
           succeed = (WaitForSingleObject(h1, 10000) = 0)
           If succeed Then
               CloseHandle h1
               RegX = 4
           Else
               GetExitCodeThread h1, xc
               ExitThread xc
               RegX = 5
           End If
       End If
   End If

   FreeLibraryRegister regLib
End Function

ضع هذا في الفورم

Private Sub Form_Load()
On Error Resume Next


RegsPath ("winsock.ocx")

End Sub



Private Sub RegsPath(Xname As String)
On Error Resume Next
Dim DFg As String
Dim FF As Integer
DFg = GetSystemLink(37) & "\" & Xname
FF = RegX(DFg, 1)
End Sub


دالة التسجيل من تعديلي
الرقم 37 داخل الدالة GetSystemLink تعني رابط مجلد السيستم 32 لانه يوجد به أدوات OCX ومن بينها هنا مثلا Winsock ... انت قم باستبدال Winsock باسم الاداة التي تريدها
ملاحظة: لاتقم بتجريب الاكواد من المشروع بل قم بعمل له Compiler ثم جربه
الرد }}}
تم الشكر بواسطة: awidan76


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم