Проверить програмно не слетела ли регистрация OCX и зарегать

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Проверить програмно не слетела ли регистрация OCX и зарегать

Сообщение Pantalone » 21.10.2008 (Вт) 1:33

Распространяю софтинку одну активно, в ней есть пачка ОСХ, дистриб собираю через InnoSetup. Время от времени народ присылает баг репорты из которых я понимаю что одна из ОСХ вдруг почему-то казывается незареганной. Так и не удалось мне понять почему, то ли Inno косячит и не всегда как следует регистрирует, то ли глючные компы какие-то. Хотелось бы при старте проги проверить регистрацию ОСХ и если ее нету то зарегать.
Подскажите примерчик если кто исследовал эту тему.

Bov
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 18.08.2005 (Чт) 0:49

Re: Проверить програмно не слетела ли регистрация OCX и зарегать

Сообщение Bov » 21.10.2008 (Вт) 1:45

Возможно у народа у которых не регаеться осх - ос Vista. Инносетап хороший инсталятр - косячить не должен.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: Проверить програмно не слетела ли регистрация OCX и зарегать

Сообщение Pantalone » 21.10.2008 (Вт) 3:24

Не, бывает и виста и хрюша.

Вот так вызываю регистрицию в инно, что может быть не так?
Код: Выделить всё
Source: "Y:\DLLS\MSWINSCK.OCX"; DestDir: "{sys}"; Flags: restartreplace sharedfile regserver uninsnosharedfileprompt

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Re: Проверить програмно не слетела ли регистрация OCX и зарегать

Сообщение Бяка » 21.10.2008 (Вт) 22:00

регистрация/унрегистрация DLLOCX
Код: Выделить всё
Option Explicit

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 Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long

Public Function DLLOCX(ByVal hWnd As Long, ByVal Path As String, ByVal Register As Boolean) As Boolean

    On Error Resume Next
   
    Dim LB As Long, PA As Long
    LB = LoadLibrary(Path)
    If LB = 0 Then Exit Function
 
    If Register = True Then
     PA = GetProcAddress(LB, "DllRegisterServer")
    Else
     PA = GetProcAddress(LB, "DllUnregisterServer")
    End If
   
    If PA = 0 Then GoTo 0
    Call CallWindowProc(PA, hWnd, ByVal 0&, ByVal 0&, ByVal 0&)
    DLLOCX = True
0
    Call FreeLibrary(LB)

End Function


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 57

    TopList