IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[DLL] Enregistrer DLL (COM) par programmation


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut [DLL] Enregistrer DLL (COM) par programmation
    Salut,

    j'aimerais savoir comment enregistrer des DLL de type COM dans la base de registre par programmation...

    Actuellement, j'utilise la ligne de commande "regsrv32 <url_de_ma_DLL>" pour le faire, mais j'aimerais que ce soit une application qui fasse cette action.

    J'ai bien songé à appeler regsrv32 à partir de mon application, mais j'aurais les boîtes de dialogues de confirmation d'enregistrement qui apparaitront comme par magie lors des appels, et faudrait éviter ça

    Merci d'avance pour vos réponses

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux éviter les boites de messages en utilisant l'option /S de regsvr32

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Mais oui, c'est vrai ! Comment n'y ai-je pas pensé, alors que je connais cette option !??!

    ça me permettrai de faire une première version pas top mais fonctionnelle.

    Merci !

    Par contre, si quelqu'un connais le truc pour le faire par programmation sans utiliser la commande regsrv32 (en écrivant les clés directement dans la base de registre ?), je suis aussi preneur

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    un truc comme ca devrait marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    const char DllRegSvr_[] = "DllRegisterServer";
    const char DllUnregSvr_[] = "DllUnregisterServer";
     
    void registerDll(const char *dll_name, BOOL unregister)
    {
    	LPCSTR pszDllEntryPoint;
    	LPCSTR pszDllName = NULL;
    	HRESULT (STDAPICALLTYPE * lpDllEntryPoint)(void);
     
    	if (dll_name == NULL)
    		return;
    	if (unregister == TRUE)
    		pszDllEntryPoint = DllUnregSvr_;
    	else
    		pszDllEntryPoint = DllRegSvr_;
     
    	if (FAILED(OleInitialize(NULL)))
    		return;
    	SetErrorMode(SEM_FAILCRITICALERRORS);
     
    	HINSTANCE hLib = LoadLibraryEx(dll_name, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
    	if (hLib < (HINSTANCE)HINSTANCE_ERROR)
        {
    		OleUninitialize();
    		return;
    	}
     
    	(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, pszDllEntryPoint);
     
    	if (lpDllEntryPoint == NULL) 
    	{
    		FreeLibrary(hLib);
    		OleUninitialize();
    		return;
    	}
     
    	if (FAILED((*lpDllEntryPoint)())); // erreur, à traiter éventuellement
     
    	FreeLibrary(hLib);
    	OleUninitialize();
    }

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Regarder le code de register.exe dans les COM tutorial samples

    (Entre autres, ils sont dans les exemples livrés avec le Platform SDK)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Médinoc
    Regarder le code de register.exe dans les COM tutorial samples

    (Entre autres, ils sont dans les exemples livrés avec le Platform SDK)

    Bien vu l'aveugle !!!
    Ce code est tout simplement le grâal que je recherchais

    J'ai pas encore bien regardé, mais je considère que ce topic est résolu car j'ai à la fois la solution de nico-pyright(c) et la tienne. Merci beaucoup à tous les deux !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/05/2012, 12h12
  2. enregistrement d'un fichier dll en tout début de programme
    Par rudyhadoux dans le forum C++Builder
    Réponses: 0
    Dernier message: 11/09/2007, 12h02
  3. [VB6] création dll win32 et appel par un autre programme
    Par Tankian85 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/03/2006, 08h21
  4. Liaison d'une dll Visual C++ dans un programme c++Builder
    Par Cyrilh7 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/11/2003, 13h49
  5. Enregistrement du son par programme
    Par Invité dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2003, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo