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

VB 6 et antérieur Discussion :

Utiliser une DLL et OCX sans la copier dans WINDOWS


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Utiliser une DLL et OCX sans la copier dans WINDOWS
    Bonjour à tous,

    J'ai fait pas mal de recherche sur mon problème sans y trouver de solution et comme je suis autodidacte je n'ai pas des bases très solides malheureusement.

    J'ai programmé un soft sur VB6 qui utilise un graphique pour lequel mschart.ocx et vb6fr.dll sont nécessaires. Sauf que j'aimerais pouvoir utiliser ce soft sur des PC pour lesquels je n'ai pas le droit admin et donc pour lesquels je ne peux pas copier ces deux fichiers dans le répertoire de C:\Windows.

    J'aimerais donc savoir s'il y a un moyen pour faire appel à ces fichiers sans avoir à les copier et à donc utiliser les droits administrateurs. A cause de ce problème j'avais envisagé de migrer tout le soft sur VB.NET mais ça serait un très/trop gros chantier.

    Si vous avez une solution à ma problème ça me soulagerait grandement !

    Pablo

  2. #2
    Modérateur

    Bonjour et BIENVENU sur DVP;

    Tu pourras les copier dans le dossier de destination de ton soft.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Nouveau Candidat au Club
    Bonjour l_autodidacte et merci de m'accueillir !

    Merci de ta réponse rapide. Je viens donc d'essayer cette proposition. Je copie donc le .exe, le .ocx et le vb6fr.dll dans un même dossier sur le bureau du PC sur lequel je veux tester le soft. A l’exécution, j'ai le message classique "le composant 'MSCHRT20.OCX' ou une de ses dépendances n'est pas correctement enregistré : un fichier est absent ou incorrect".

    Quand j'ai les droits administrateurs le problème est résolu en copiant l'ocx et la dll dans C:\Windows\SysWOW64 mais juste en les mettant dans le même dossier que le .exe ça ne fonctionne pas.

    Est-ce que tu as une idée ?

  4. #4
    Rédacteur/Modérateur

    Salut

    "le composant 'MSCHRT20.OCX' ou une de ses dépendances n'est pas correctement enregistré : un fichier est absent ou incorrect".
    Comme dit par l_autodidacte (), il faut placer tous les composants et les dépendances dans le dossier ou se trouve l'exécutable, MSCHRT20.OCX utilise peut être une dépendances que tu n'as pas mis dans le dossier.

    De mon humble avis, fait un package comme une installation classique, repaire dans le dossier du package/support tous les fichiers DLL, OCX, TLB ....., c'est ces fichiers qui doivent être dans le même dossier que ton exécutable.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  5. #5
    Nouveau Candidat au Club
    Bonjour et merci à toi aussi ProgElecT !

    J'ai donc un peu cherché à voir comment appliquer ta solution.
    - Donc j'ai utilisé l'assistant empaquetage & déploiement de VB6
    - Sélectionner mon .vbp
    - Cliquer sur Empaquetage

    Mais je tombe sur le message d'erreur suivant :
    "Une erreur inattendue numéro 80040154 s'est produite : Classe non enregistrée"
    J'ai essayé de trouver d'où venait l'erreur et je suis même retombé sur d'anciens messages à toi mais ça ne m'a pas permis de résoudre le problème.

    J'ai l'impression que c'est encore lié à mon ocx (mschart20.ocx) car si je l'enlève de C:\windows\SysWOW64 je n'ai pas le même message d'erreur. Il me dit qu'il ne peut charger une form et dans le fichier log j'ai :
    Ligne 1733: la propriété OleObjectBlob dans MSChart1 n'a pas pu être définie
    Ligne 1733: Impossible de charger le contrôle MSChart1

    Il s'agit donc du graphique qui est géré par MSChart.ocx ...

    Est-ce que tu pourrais m'éclairer ? Je sens que ça avance dans le bon sens

    Pablo

  6. #6
    Rédacteur/Modérateur

    Salut

    Une erreur inattendue numéro 80040154 s'est produite : Classe non enregistrée
    Dans se cas, enregistre le avec regsvr32, fais une session MSDOS, tu te mets dans le dossier C:\WINDOWS\system32, et tu passe la commande:
    C:\WINDOWS\system32>regsvr32 c:/leDossierOuSeTrouveLexecEtLocx/mschart20.ocx.
    Par contre tu ne devrais pas supprimer l'OCX du dossier \SysWOW64, tu peux avoir 2 référencements pour un même OCX.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  7. #7
    Nouveau Candidat au Club
    Salut ProgElecT,

    Donc je suis sur W10 je lance l'invite de commande CMD
    Je change de répertoire : CD /D C:\WINDOWS\System32
    Je tape C:\WINDOWS\System32>regsvr32 C:\lerepertoiredemonexe\mschrt20.ocx
    Et là j'ai le message d'erreur suivant :

    "Echec du chargement du module C:\lerepertoiredemonexe\mschrt20.ocx

    Vérifiez que le fichier binaire est stocké à l'emplacement désigné par le chemin d'accès spécifié ou déboguez-le pour rechercher d'éventuels problèmes de fichiers .DLL binaires ou dépendants.

    Le module spécifié est introuvable."

    J'ai testé de changer de dossier pour un chemin plus court (même sur C:\ directement) mais ça me renvoie le même message d'erreur. Là pour le coup je ne sais vraiment pas quoi en penser. Est-ce que tu aurais encore une idée ?

    Par ailleurs le mschrt20.ocx est de nouveau présent dans le C:\WINDOWS\SysWOW64 quand je fais les manips.

    En tout cas merci du coup de main !

    Pablo

  8. #8
    Rédacteur/Modérateur

    Re

    S'est on vraiment compris
    Pour registrer tu dois donner le chemin du dossier ou se trouve l'exécutable et l'OCX, non pas (comme dans mon exemple)
    regsvr32 C:\lerepertoiredemonexe\mschrt20.ocx
    regsvr32 chemin complet vers le repertoire de ton executable et ou se trouve l'OCx et nom du fichier à registrer
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  9. #9
    Nouveau Candidat au Club
    Merci de ta réponse malheureusement j'ai pas l'habitude de manipuler le registre et là je suis déjà perdu ...
    Je n'ai pas compris ton dernier message parce que j'ai l'impression d'avoir fait exactement la même chose.

    Quand tu marques ceci :
    regsvr32 chemin complet vers le repertoire de ton executable et ou se trouve l'OCx et nom du fichier à registrer

    C'est ce que je fais non ? mon mchrt20.ocx se trouve dans le même dossier que l'exécutable soit C:\lerepertoiredemonexe\
    Donc la commande ça serait : C:\WINDOWS\System32>regsvr32 C:\lerepertoiredemonexe\mschrt20.ocx ?

    J'ai également directement copié mschrt20.ocx dans le System32 et taper (en lisant que ça pourrait marcher)
    C:\WINDOWS\System32>regsvr32 mschrt20.ocx
    Mais cela ne fonctionne pas non plus ...

    Désolé j'ai un peu du mal !

  10. #10
    Rédacteur/Modérateur

    Re

    lerepertoiredemonexe est vraiment le nom que tu as donné au répertoire ou se trouve l'exécutable et l'OCX et ses dépendances?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  11. #11
    Nouveau Candidat au Club
    Re
    Il s'agit juste du nom raccourci où se trouvent le vb6fr.dll le .exe et le mschrt20.ocx et aussi de tout le projet vb par ailleurs (avec toutes les frm et les modules). Le nom du répertoire n'est pas textuellement celui-ci : lerepertoiredemonexe, il suit en réalité toute l'arborescence. Il est donc beaucoup plus long.

    Est-ce que tu vois ce que je ne fais pas correctement ?

    Merci d'avance.

  12. #12
    Rédacteur/Modérateur

    Re re re

    Une idée, si tu fais un raccourci de l'exécutable que tu places sur le bureau, cliques droit ==> Propriété ==> bouton Avancé... et là, cocher Exécuter en tant qu'administrateur ==> Ok, dans la fenêtre Propriétés de: .... cliquer le bouton Appliquer, fermer la fenêtre puis double-cliquer sur le raccourci, cala donne quoi ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  13. #13
    Nouveau Candidat au Club
    Bonjour ProgElecT,

    Je ne vois pas trop où tu veux en venir en fait. J'ai donc fait cela sur ma session de mon ordi perso pour lequel j'ai déjà les droits administrateurs. Et le programme s'est ouvert tout à fait normalement.

    De ce que je comprends depuis le début c'est que je dois trouver les dépendances de mschrt20.ocx et les mettre dans le dossier du .exe. Il y a-t-il une autre façon de faire que d'utiliser l'assistant empaquetage & déploiement de VB6 pour les trouver ?

    Merci de ta patience !

    Pablo