Несколько вопросов касающихся ActiveX DLL

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
coder
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 20.02.2002 (Ср) 20:14

Несколько вопросов касающихся ActiveX DLL

Сообщение coder » 24.08.2003 (Вс) 2:08

Во-первых: При компиляции ActiveX DLL VB5 создаёт 3 файла DLL, EXP, LIB. Можно ли удалить всё кроме DLL’а? У мена работает всё и так. Будет ли работать у других?
Во-вторых: При запуске программы на чужом компьютере использующей сделанный мной ActiveX DLL, его необходимо зарегистрировать. Для этого я использую программу RegSvr32. Программно это я реализую так:

Private Sub Form_Load()
On Error GoTo fixerror

Set ML = New MyLib
Exit Sub

fixerror:
Shell GetSysDir & "\regsvr32.exe " & GetSysDir & "\MyLibrary.dll /s", vbHide
Set ML = New MyLib
End Sub

Может быть есть более удобные и правильные способы?

lenar
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.08.2003 (Сб) 14:34

Сообщение lenar » 24.08.2003 (Вс) 18:31

Есть лучше способ:
Код: Выделить всё
Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long

Public Function Register_OCX_DLL(Wnd As Long, Path As String, Reg As Boolean)
    On Error Resume Next
    Dim LB As Long, PA As Long
    LB = LoadLibrary(Path)
    If Reg = True Then
     PA = GetProcAddress(LB, "DllRegisterServer")
    Else
     PA = GetProcAddress(LB, "DllUnregisterServer")
    End If
    If PA > 0 Then
        Call CallWindowProc(PA, Wnd, ByVal 0&, ByVal 0&, ByVal 0&)
        Call FreeLibrary(LB)
    End If
End Function
The best from the VB

Хой
Не математик
Не математик
 
Сообщения: 541
Зарегистрирован: 26.08.2002 (Пн) 0:21
Откуда: Россия

Re: Несколько вопросов касающихся ActiveX DLL

Сообщение Хой » 24.08.2003 (Вс) 19:49

coder писал(а):Во-первых: При компиляции ActiveX DLL VB5 создаёт 3 файла DLL, EXP, LIB. Можно ли удалить всё кроме DLL’а? У мена работает всё и так. Будет ли работать у других?

Будет (по крайней мере у меня работало), так как эти файлы создадутся после первого обращения к DLL'шке.
А если даже и не создадутся, то всё равно всё будет работать и бе них!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList