begin process at 2008 08 08 21:31:49
1 223 607 membres
365 nouveaux aujourd'hui
14 230 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DLLREGISTER (UN VRAI REGISTER/UNREGISTER D'OCX, SANS REGSVR32)


Information sur la source

Catégorie :API Classé sous : regsvr32, register, unregister, ocx Niveau : Initié Date de création : 23/10/2001 Vu : 10 337

Note :
8,81 / 10 - par 31 personnes
8,81 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Ouhais, moi, j'en ai marre des code dégeus qui explique comment, pour la xème fois, enregistrer un OCX avec regsvr32... Bien crade, quoi.

Alors voici comment enregistrer en interne, dynamiquement, un composants ActiveX en utilisant les API.

Principe : Les ActiveX possèdent tous deux méthodes qui s'appellent 'DLLRegisterServer' et 'DLLUnRegisterServer' ; REGSVR32 ne fait rien d'autres que les appeller suivant le cas...

Source

  • Option Explicit
  • ' #####################################################################################
  • ' # Reg auto d'un ActiveX
  • ' # Peut être utile pour un plug in
  • ' #####################################################################################
  • Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
  • Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  • Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  • Private 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
  • Private Const ERROR_SUCCESS = &H0
  • Public Function RegisterServer(ByVal Prm_L_hWnd As Long, ByVal Prm_S_DllServerPath As String, byval Prm_B_Register As Boolean) as boolean
  • On Error Goto RegisterServer_Err
  • Dim L_Lib As Long
  • Dim L_ProcAdress As Long
  • L_Lib = LoadLibrary(Prm_S_DllServerPath)
  • If Prm_B_Register Then
  • L_ProcAdress = GetProcAddress(L_Lib, "DllRegisterServer")
  • Else
  • L_ProcAdress = GetProcAddress(L_Lib, "DllUnregisterServer")
  • End If
  • If CallWindowProc(L_ProcAdress, Prm_L_hWnd, ByVal 0&, ByVal 0&, ByVal 0&) = ERROR_SUCCESS Then
  • RegisterServer = True
  • Else
  • RegisterServer = False
  • End If
  • Call FreeLibrary(L_Lib)
  • Exit Function
  • RegisterServer_Err:
  • Call MsgBox("Erreur numéro : " & Err.Number & vbCrLf & "Description : " & Err.Description)
  • End Function
Option Explicit

' #####################################################################################
' # Reg auto d'un ActiveX
' # Peut être utile pour un plug in
' #####################################################################################

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private 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
Private Const ERROR_SUCCESS = &H0

Public Function RegisterServer(ByVal Prm_L_hWnd As Long, ByVal Prm_S_DllServerPath As String, byval Prm_B_Register As Boolean) as boolean

    On Error Goto RegisterServer_Err

    Dim L_Lib As Long
    Dim L_ProcAdress As Long
    
    L_Lib = LoadLibrary(Prm_S_DllServerPath)

    If Prm_B_Register Then
        L_ProcAdress = GetProcAddress(L_Lib, "DllRegisterServer")
    Else
        L_ProcAdress = GetProcAddress(L_Lib, "DllUnregisterServer")
    End If

    If CallWindowProc(L_ProcAdress, Prm_L_hWnd, ByVal 0&, ByVal 0&, ByVal 0&) = ERROR_SUCCESS Then
        RegisterServer = True
    Else
        RegisterServer = False
    End If

    Call FreeLibrary(L_Lib)
    
    Exit Function

RegisterServer_Err:

    Call MsgBox("Erreur numéro : " & Err.Number & vbCrLf & "Description : " & Err.Description)

End Function  

Conclusion

Voila... Donc, pour l'utiliser :

  Call RegisterServer(Form1.hWnd, "COMCTL32.OCX", True) ' False pour Unregister
  • signaler à un administrateur
    Commentaire de cyrilp le 11/01/2002 12:23:41

    Bravo, rien à redire...
    Pour confirmer les commentaires sur ce code : C'est un site de CODES SOURCES.

    Les EXE on en veut pas (ou seulement pour pouvoir tester le prog' avant de regarder la source)

    Bon travail !

    A++

    Nb : Je te met un petit 8/10 !

  • signaler à un administrateur
    Commentaire de Bast le 07/03/2002 11:57:08

    Bonne idée de source.

  • signaler à un administrateur
    Commentaire de FredJust le 06/07/2002 01:04:22

    HOU LA LA
    faites quelques test avant d'ecrire n'importe quoi
    mes ActiveX VB6 s'enregistre tout seul comme des grands
    A LIRE :
    http://fred.just.free.fr/francais/activex/utilisation.html

  • signaler à un administrateur
    Commentaire de olid le 06/09/2002 18:30:43

    Heu...zest essayé, et zà plante mon appli au démarrage :o(((((((

    Par manque de connaisssance, jinstalle les OCX et DLL dans le même dossier que mon appli...Est-ce zà mon erreur ?

    Sui je obligé de les installer dans SYSTEM ou SYSTEM32 ?

  • signaler à un administrateur
    Commentaire de cyrilp le 10/05/2003 22:38:02

    Y'a longtemps que j'etais pas passé sur cette code et....
    juste un petit mot à FredJust... Tu dis que tes OCX s'enregistrent tout seul ???

    Alors pourquoi dans ton site tu explique comment utiliser RegSvr32 ???
    As tu compris l'interet de cette source au moins ?

    A+
    Cyril

  • signaler à un administrateur
    Commentaire de FLYeRNeT le 04/08/2006 09:50:06

    Sympa cette source, mais ce que je recherche c'est à enregistrer un ocx ou une dll avec mon programme que si ça n'a pas été fait précédemment.
    Sur quelle clef du registre se baser pour ne lancer le regsvr32 que si l'activeX n'est pas déjà enregistré sur le systeme ?

  • signaler à un administrateur
    Commentaire de kakenette le 14/02/2008 23:09:49

    Dommage que mes antivirus et anti-spywares detect l'enregistrement et le classe parmis un badware :/

  • signaler à un administrateur
    Commentaire de zen69 le 13/03/2008 20:49:37

    C'est bien beau tout ca... mais ca me retourne true meme si le composant n'est pas correctement enregistrer... tu as une idee pourquoi ?

  • signaler à un administrateur
    Commentaire de zen69 le 13/03/2008 21:10:49

    Et aussi a quoi ca sert le premier parametre (window.hwnd) ... ?

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS