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 : 11 515

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
 

Commentaires et avis

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 dans le forum

Impossible de register MCI32.ocx [ par olivierarnaud ] que ce soit par regsrv32 ou par l'API. KK'un aurait-il une petite idée.J'ai utiliser l'API pour registrer comctl32.ocx et ça marche mais pas avec MCI3 shell [ par drpsico ] bonjour est ce quelqu'un c pk a et b ne son pas reconnuDim A, BPrivate Sub Form_Load()A = App.Path & "\MSCOMCTL.OCX"B = App.Path & "\MSWINSCK.OCX"Shel Enregistrement d'ocx [ par whombat ] Bonjour, Je suis très ennuyé. Je viens de changer de configuration informatique etr aussi d'OS. Je suis passé de W2000 à XP Media. J'avais des ocx Contraire de Regsvr32 [ par pimousse75 ] Bjr,comment effacer une ocx en base de registre, cad le contraire de regsvr32 mon_ocx.ocxMerci ! probleme de register avec anciens OCX... [ par yorom ] bonjourje viens de reprendre la prog d'un logiciel ecrit en vb4 qui utilisait les controls Sheridan 3d, Outline et Grid (tous ocx) hors depuis vb5 et OCX + register? [ par zen69 ] Salut tout le monde,Petite question tres simple, est-ce qu'on est obligé de register un ocx que l'on veut utiliser dans son projet?Parce que je croyai Ocx et taille? [ par Sator ] Bonjour à tous, ma question est la suivante:je met en place des images dans une function, à la fin de la function j'essaie de redimenssionner mon ocx


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.