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

Visual C++ Discussion :

Changer le uuid d'un ocx


Sujet :

Visual C++

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 112
    Par défaut Changer le uuid d'un ocx
    Bonjour,

    je souhaite créer à partir d'un projet visual c++ déjà existant une nouvelle instance de mon ocx mais avec un nom différent.
    J'ai pour cela modifié les settings du projet ainsi que quelques références dans le code. J'ai également modifié les uuid présents (4 en séquences suivies).
    Mon projet compile mais lorsque je veux enregistrer l'ocx dans la registry il me met le message suivant :

    DllRegisterServer dans C:......ocx a échoué.
    Le code renvoyé était : 0x80040200
    Merci par avance de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Quelle version de VS ?
    4 en séquences suivies
    ??? les UUID ne devraient pas se suivre.

    Il est plus simple de partir d'un projet vierge que de modifier un projet existant. Vous n'y aurez qu'à y ajouter les sources et modifier quelques noms de constantes.

    pour "0x80040200" : vieux code tout moisi ?
    http://social.msdn.microsoft.com/For...e-3ae10b7661ac

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 112
    Par défaut
    Bonjour,

    il s'agit de la version livrée installée avec VB6.

    Dans le code d'origine les UUID sont comme ceci

    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
    #include <olectl.h>
    #include <idispids.h>
     
    [ uuid(D970DEC3-E99B-11D0-AF42-00A0D103F47D), version(1.0),
      helpfile("Enccom32.hlp"),
      helpstring("Enccom32 ActiveX Control module"),
      control ]
    library ENCCOMLib
    {
    	importlib(STDOLE_TLB);
    	importlib(STDTYPE_TLB);
     
    	[ uuid(D970DEC1-E99B-11D0-AF42-00A0D103F47D),
    	  helpstring("Dispatch interface for Encom Control"), hidden ]
    	dispinterface _DEncom
    J'ai déjà essayé de repartir d'un projet vierge mais ça ne fonctionne pas bien.
    Il faut dire que je ne maitrise pas vraiment le domaine et je n'ai pas trouvé de guide ou de tuto pour m'aider.

    Tout ce code est contenu dans le fichier .odl. Est il généré automatiquement ou dois-je le faire ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Il n'y a pas de Visual C++ installé avec VB6.

    On va comprendre que c'est Visual Studio 6 qui pouvait installer VC++ et VB.

    Super, un outil vieux de plus de 15 ans.

    Il est clair que j'ai plus ce genre d'outil sur ma machine depuis belle lurette.

    On va essayer de préciser votre demande.
    Qu’entendez-vous par "nom différent" ?

    Voulez-vous faire une nouvelle version du composant ou le cloner ?

    Quel est votre véritable besoin ?

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 112
    Par défaut
    Oui pardon VS6 et non VB6.

    En fait je dois cloner mon composant.
    Il exploite 2 fichiers externes qui doivent être modifiés.
    Cet ocx est utilisé dans un projet VB6 dont est également fait un clone.
    (Oui je sais il faudrait passer nouvelles technos mais c'est le client qui paye qui décide).
    Mes 2 exe vb6 doivent pouvoir tourner en même temps, donc mes 2 ocx doivent pouvoir cohabiter dans la registry.
    Actuellement en raison du non changement des UUID, je suppose, c'est le dernier ocx regsiter qui fait fois pour le 2 exe.

    Est-ce clair ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    On peut quand même utiliser des outils récents, même avec de vieilles technologies. Cela simplifie généralement grandement la migration.

    Donc, comme j'ai pas un VS6 sous la main, je ne peux me baser que sur ma mémoire toue mitées.

    Si je me rappel bien, le wizard de création des projets COM, génère une palanqué de fichier plus exotiques les uns que les autres, et entre autre des fichiers rgs qui contient les scripts d'enregistrement des composants dans la registry.

    COM/OLE c'est du velu de chez velu, et commencer à y toucher sans un minimum de connaissance, c'est de kamikazé.

    Franchement, il est moins complexe de prendre un projet COM généré par le wizard puis y ajouter progressivement le code.
    Oui, cela vous force à maitriser les bases de COM mais la méthode ou je change par un "find and replace" dans des fichiers abscons vous obligera à connaître toutes les arcanes de COM (rgs, odl, tlh, tli, implib, midl ...) et là, vous aurez la barbe de Gandalf quand vous aurez terminé votre apprentissage.

    Avec une projet "vierge", vous n'aurez pas de collision avec le ProgId, la version du progId, l'Id de la type library, les class Id, les monikers, ... et les fichiers scripts .rgs seront tout propre.

    Commencez par un projet sortie tout chaud du wizard qui compile puis ajoutez progressivement le code en modifiant les anciennes constantes avec les nouvelles et en testant à chaque ajout le fait que l'installation continue de bien se faire.
    Je ne me rappel plus du niveau d'équipement de VS6 pour COM mais s’il dispose de wizards et de designers, utilisez les ABSOLUMENT.

    Une FAQ (pas lu, mais généralement, sur developpez.com elles sont de très bonnes facture)
    http://windows.developpez.com/faq/dcom/

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 112
    Par défaut
    Le problème est résolu un projet vierge a complétement été refait non sans très grande peine

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

Discussions similaires

  1. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31
  2. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46
  3. Réponses: 2
    Dernier message: 26/06/2002, 13h16
  4. changer de repertoire et situer
    Par chateau dans le forum C
    Réponses: 4
    Dernier message: 24/06/2002, 11h27
  5. changer l'adresse d'un fichier...
    Par cava dans le forum C
    Réponses: 6
    Dernier message: 05/06/2002, 12h22

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