web-dev-qa-db-fra.com

Contrôles communs Visual Studio 6 Windows 6.0 (sp6) Windows 7, 64 bits

On m'a demandé d'aider à travailler sur une ancienne application vb6 pour quelqu'un, alors j'ai décidé de lancer Visual Studio 6 sur mon ordinateur portable Windows 7 x64 en suivant ce guide .

Il s’est bien installé, et je peux voir que tout fonctionne, à l’exception de Microsoft Windows Common Controls 6.0 (sp6). Microsoft Windows Common Controls-2 6.0 (SP6), Microsoft Windows Common Controls 5.0 (SP2), etc. fonctionnent parfaitement. Cependant, lorsque j'essaie d'ajouter le composant Microsoft Windows Common Controls 6.0 (sp6), l'erreur suivante apparaît:

'' could not be loaded

Je ne pouvais pas ajouter une image, j'ai donc transféré une capture d'écran ici pour tous ceux qui veulent la voir exactement:

http://i.imgur.com/7aym4xB.png

J'ai essayé d'enregistrer/annuler l'enregistrement/ré-enregistrer MXCOMCTL.OCX, MSCOMCT2.OCX, msdatsrc.tlb sans succès. J'ai également désinstallé une mise à jour de sécurité connue pouvant avoir causé des problèmes avec les contrôles communs Windows. J'ai supprimé IE11, même si les rapports indiquent que IE11 ne causera pas de problèmes avec MSCOMCTL.OCX comme IE10. 

J'exécute VB6.EXE en mode de compatibilité Windows XP SP3. Avec Désactiver les thèmes visuels, Désactiver la composition du bureau et Désactiver la mise à l'échelle de l'affichage avec des paramètres PPP élevés. En plus de l'exécuter en tant qu'administrateur.

J'ai également essayé d'ouvrir un projet précédent qui utilise ce contrôle et échoue lors du chargement avec la même erreur "vierge" que dans la capture d'écran avec les éléments suivants dans le journal des erreurs généré:

Ligne 35: Classe MSComctlLib.ListView du contrôle lvData n'était pas une classe de contrôle chargée . Ligne 223: Classe MSComctlLib.StatusBar du contrôle Stat n'était pas une classe de contrôle chargée.

Cela me dit donc que ce n'est pas un problème de version dans le fichier .vbp, comme certains le suggèrent (comme cela se produit également avec les nouveaux projets vierges).

Je suis à bout. Apparemment, les gens ont réussi à faire fonctionner correctement VB6 et Windows 7 x64 (avec les contrôles communs Windows), mais RIEN j’ai tenté d’atténuer mon problème. J'espère que quelqu'un ici a peut-être rencontré ce problème ou a des idées sur ce qui se passe.

22
Jay

En attendant une réponse pour des idées ici, j'avais décidé d'essayer quelque chose. J'ai exécuté regedit en tant qu'administrateur, j'ai accédé à la clé HKEY_CLASSES_ROOT\TypeLib, puis j'ai effectué une recherche sur "MSCOMCTL.OCX" ... J'ai supprimé TOUTES les clés ayant référencé ce fichier .ocx.

Après avoir recherché dans tout le registre, en supprimant ce que j'ai trouvé, j'ai exécuté la commande Invite en tant qu'administrateur. J'ai ensuite navigué vers C:\Windows\SysWOW64 et tapé les commandes suivantes:

regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb

Lors de l'enregistrement de ces deux fichiers à nouveau, tout fonctionne! J'ai parcouru le Web pendant des heures à la recherche de cette solution, mais en vain. Il se trouve que j’ai réglé le problème moi-même après avoir posté une question ici :( Même si Visual Studio 6 est obsolète, il est à espérer que cela pourra aider d’autres!

43
Jay

L'implémentation des deux directives fonctionnait déjà pour moi à partir de "C:\Windows\SysWOW64".

regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb

Il est à noter que la boîte de dialogue DOS doit être en mode administrateur. Avant cela, j'avais des erreurs dans la veine "Classe MSComctlLib.TreeView du contrôle tvTreeView n'était pas une classe de contrôle chargée" et "Classe MSComctlLib.ListView du contrôle lvListView n'était pas une classe de contrôle chargée".

J'utilise également Visual Studio 6 sur Windows 7 64 bits, avec les mises à jour SP6. J'ai été conduit ici à cause du même problème. Dans mon cas, je n'avais pas besoin de passer par le registre.

11
Loloy D

J'ai cherché ce numéro pendant des heures et cliqué sur des centaines de sites Web, aucun d'entre eux ne fonctionnait.

Ma solution finale:

  1. exécuter: cmd
  2. cd c:\Windows\SysWOW64 (recherchez l'emplacement)
  3. regsvr32 MSCOMCTL.OCX

cela résout le premier. Pour le second:

  1. exécuter: cmd
  2. cd c:\Windows\Microsoft.NET\Framework\v4.0.30319
  3. regtlibv12 msdatsrc.tlb

terminé.

cela peut ne pas fonctionner pour tout le monde (compte tenu de la raison de la version du système, etc.)

2
yingliu

J'avais la même difficulté à charger mon projet VB 6. Voici un exemple de message d'erreur: "La classe MSComctlLib.ProgressBar du contrôle prgExecution n'était pas une classe de contrôle chargée."

Microsoft Magic a résolu le problème suivant: J'ai ouvert la fenêtre Composants du projet dans mon projet endommagé. J'ai cliqué sur Parcourir et trouvé le fichier MsComctl.ocx. J'ai cliqué sur OK. VB 6 s'est alors retrouvé bloqué (l'application ne répondait pas). Après un certain temps, j'ai terminé l'application VB 6 à l'aide du gestionnaire de tâches.

Puis, comme par magie, lorsque j'ai ouvert mon projet VB 6 pour montrer à mon ami programmeur ce qu'était ce projet, tous les contrôles étaient de retour, liés comme prévu. D'une manière ou d'une autre, quelque chose a été enregistré ou corrigé.

2
Kay

Aujourd'hui, j'ai eu le plaisir (douteux) de faire tourner du code VB6 sous Windows/64 bits. Je suis tombé sur ce fil de discussion, mais aucune des solutions proposées ne fonctionnait pour moi ..__ Ni n'a fonctionné en ajoutant des références à l'aide du menu "Projet -> Références ...".

Pour le faire fonctionner, je devais modifier manuellement le fichier de projet VB6 (* .vbp) . Pour toutes les bibliothèques avec lesquelles j'avais un problème de chargement, je devais utiliser la notation suivante pour définir comme référence: Object = { Clé de registre} # Version # 0; LIBRARY.OCX Exemple: Object = {FAEEE763-117E-101B-8933-08002B2F4F5A} # 1.1 # 0; DBLIST32.OCX

Je ne devais enregistrer aucune des bibliothèques (en utilisant regsvr32), elles étaient toutes déjà correctement enregistrées. Je suppose que ma solution fonctionne bien si la notation "object = {[...]" est utilisée (au lieu de la notation "Référence = *\G {[...]") VB utilisée par Studio la clé de registre uniquement et obtient la racine de C:\Windows\SysWOW64 alors que dans l'autre sens, on cherche dans C:\Windows\System32

Au fait, IE11 est installé. Que cela compte ou non, seul le projet de loi G peut le savoir. Mon hypothèse est que ma solution fonctionne quel que soit le IE installé. Il vous suffira peut-être de désenregistrer et d’enregistrer les bibliothèques manquantes, comme indiqué dans ce fil de discussion.

J'espère que cela aidera toute personne confrontée à des problèmes similaires.

1
Chris

J'obtiens le même problème mais j'obtenais l'erreur en dessous de l'erreur lorsque j'exécutais regsvr32 MSCOMCTL.OCX

Le module "MSCOMCTL.OCX" a été chargé mais l'appel à DllRegisterServer a échoué avec le code d'erreur 0x8002801c.

Lorsque j'exécute CMD.EXE en tant qu'administrateur, mon problème a été résolu.

Parfois, VB6.EXE doit également être exécuté en tant qu'administrateur pour accéder à un problème de registre.

Bonne chance.

0
user3107325

Ouvrez l'éditeur de registre à l'aide de la commande d'exécution regedit.

Recherchez la clé HKEY_CLASSES_ROOT\TypeLib, effectuez une recherche sur "MSCOMCTL.OCX" et supprimez CHAQUE clé qui fait référence à ce fichier .ocx.

Ouvrez la commande Invite (cmd) en mode Administrateur. Le tapez le code suivant,

En machine 32 bits,

cd c:\Windows\System32
regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb
regsvr32 MSCOMCT2.OCX

En machine 64 bits,

cd c:\Windows\SysWOW64
regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb
regsvr32 MSCOMCT2.OCX
0
Codemaker

J'ai eu le problème par lequel VB6 IDE ne chargerait pas les contrôles communs (Sp6) avec VB6 installer sur W7 64bit, spécifiquement comctrl et msmask. J'ai essayé toutes les solutions proposées en utilisant regsrv32 (élevé), modifié le registre, modifié le numéro de version dans le vbp, etc., comme proposé par MS et d'autres. Tout a échoué. Ces solutions ont fonctionné sur mes 2 autres PCS mais pas celui-ci. Finalement, j'ai supprimé IE11 et tout a bien fonctionné par la suite. IE10 n’avait jamais été installé sur ce PC - nous sommes passés directement d’IE8 à IE11 et avons été forcés de revenir en arrière pour utiliser IE8. 

Je dois dire que la solution simple ci-dessus ne résout pas le problème, à savoir que le VB6 IDE ne chargera pas les contrôles communs (à l'aide de la sélection du menu Composants sous Projet) - vous obtenez une erreur disant que l'objet n'est pas chargé. Donc, cela se produira (et je l’ai prouvé moi-même) sur tout projet, nouveau ou ancien, qui tente d’utiliser les contrôles courants qui ne se chargent pas. 

Donc, ma suggestion à ceux qui ont ce problème est d'essayer la solution de registre manuel en utilisant la route regsrv32, puis d'éditer le vbp pour changer de version, et si celles-ci échouent, désinstallez IE11 (et par cœur IE10). Mais cela n’est peut-être toujours pas une solution à 100%, car si vos fichiers de projet existants ".vbp" contiennent des références aux mauvais contrôles communs, vous devez corriger cela manuellement - c’est ici que vous devez charger un nouveau projet et charger les composants dont vous avez besoin dans l’EDI , puis éditez le vbp nouvellement créé en utilisant le bloc-notes et copiez les numéros de version des contrôles courants dans vos fichiers vbp existants. 

0
AlexKen

=> juste ce que jay a dit il suffit de supprimer ces entrées de registre qui pointent vers d’autres chemins que sur c:\windows\system32.Ceux sont les coupables de l’erreur. J’ai eu ces erreurs sur mon vb6 IDE et après avoir supprimé ces entrées de registre anormales, le problème a été corrigé. fonctionne comme un charme.

0
Cristian Hernandez

Je pense que cela peut être lié à un problème dans lequel Microsoft a publié une mise à jour de MScomCtlLib corrigée de manière incorrecte par Microsoft, provoquant des erreurs de registre.

Je crois que si vous suivez les conseils énoncés dans:

https://support.Microsoft.com/fr-fr/kb/2597986

0
OGUER

J'ai eu le même problème sous Windows 7-64 avec VB6. J'ai essayé d'annuler l'enregistrement et de ré-enregistrer les solutions ci-dessus, mais cela n'a pas résolu le problème. Ensuite, j'ai remarqué que dans mes composants VB6, j'avais des références à Microsoft Windows Common Controls -2 6.0 (SP6) et à Microsoft Windows Common Controls -3 6.0 (SP5). J'ai supprimé la référence SP5 et tout fonctionne maintenant correctement. Il semble que -2 6.0 SP6 remplace -3 6.0 (SP5) et lorsque les deux sont présents, il y a deux références au même contrôle .

0
Steve

Ma solution a été de remplacer le MSCOMCTL.OCX sur Windows 10 Box par un d'un Windows 7 sur lequel MS Access était également installé. Pour une raison quelconque, il existe différents contrôles MSCOMCTL.OCX 2.0 portant le même nom.

Je sais que cela semble fou et que cela n’aidera peut-être personne, mais nous avons enregistré ce fichier MSCOMCTL.OCX avec un fichier Lisez-moi, qui corrige à chaque fois les erreurs d’installation.

nous annulons l'enregistrement du fichier MSCOMCTL.OCX actuel fourni avec Windows 10, le supprimons et enregistrons l'ancien que nous avons enregistré.

0
JustJohn

SOLUTION SIMPLE

  1. Créez un nouveau projet vierge et enregistrez-le
  2. en utilisant NOTEPAD, ouvrez le .VBP du nouveau projet et copiez la ligne MSCOMCTL
  3. en utilisant NOTEPAD, ouvrez le fichier .VBP de votre projet
  4. remplacer la ligne MSCOMCTL et la sauvegarder

TERMINÉ

bonne chance

0
A.Wahi