begin process at 2012 02 09 20:48:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Foxpro

 > 

Formulaires

 > 

Général

 > 

Erreur OLE - classe non enregistrée sur une machine


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur OLE - classe non enregistrée sur une machine

mercredi 28 juillet 2010 à 17:10:24 | Erreur OLE - classe non enregistrée sur une machine

stepber

Bonjour,

J'ai une application VFP9 contenant notamment des formulaires avec des contrôles TreeView "version 1", s'appuyant sur COMCTL32.OCX. Pour ces contrôles :
- OLETypeAllowed = -2 - ActiveX Control
- OLEClass = COMCTL.TreeCtrl.1
- ParentClass = Olecontrol

Cette application est habituellement installée en ajoutant notamment COMCTL32.OCX (version 6.0.81.5) sur le poste utilisateur (s'il n'est pas déjà présent), puis en l'enregistrant avec "regsvr32".

L'application fonctionne normalement ainsi sur de nombreux ordinateurs avec diverses versions de Windows, sauf sur un Windows Server 2003 avec Office 2007 : une erreur "Code d'erreur OLE 0x80040154: Classe non enregistrée. Objet OLE ignoré. N° d'enregistrement 19." apparait à chaque ouverture d'une fenêtre contenant un contrôle TreeView. Pourtant, "regsvr32 COMCTL32.OCX" s'exécute sans erreur sur cet ordinateur.
Ce genre d'erreur est parfois arrivé sur d'autres postes utilisateurs par le passé, mais à chaque fois résolu en ré-exécutant "regsvr32 COMCTL32.OCX".
Par ailleurs, j'ai tenté de reproduire le phénomène sur un autre ordinateur de test avec Windows Server 2003 et Office 2007 : l'erreur ne se produit pas et les fenêtres avec TreeView s'affichent normalement !

J'ai essayé de comparer les versions de la DLL COMCTL32.DLL présente sur ces ordinateurs, pensant qu'une version très récente mise à jour par l'installation d'Office 2007 pourrait provoquer le phénomène. Difficile de savoir à quoi s'en tenir car il existe souvent plusieurs exemplaires de cette DLL : 1 exemplaire dans \Windows\system32\ + 1 ou plusieurs autres dans des répertoires \WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_.....\, la DLL réellement prise en compte lors de l'instruction "regsvr32 COMCTL32.OCX" n'étant visiblement pas celle de \Windows\system32\ (vu grâce aux outils "process monitor" et "process explorer") !

Toute piste ou retour d'expérience est bienvenu.
- quel OCX / DLL est réellement en cause ?
- COMCTL32.DLL doit-elle être à une version précise pour utiliser un objet COMCTL.TreeCtrl.1 ? Dans quel sous-répertoire de \Windows\ ?
- Est-il nécessaire de modifier les TreeView des formulaires VFP pour passer en "version 2" (OLEClass = MSComctlLib.TreeCtrl.2) s'appuyant sur MSComctl.OCX, lorsqu'on souhaite utiliser l'application dans des environnements "récents" ? Cela représente un travail conséquent pour mon application.

Merci d'avance.
vendredi 30 juillet 2010 à 12:46:08 | Re : Erreur OLE - classe non enregistrée sur une machine

Mike Gagnon

Membre Club

Dépendant de la version de Windows, il est préférable d'enregistrer les OCX en niveau administrateur.
Il est possible que lors de l'enregistrement, le message reçu soit positif, mais aucun autre utilisateur peux utiliser le composant.

Assure toi que celui qui enregistre le OCX sur l'oridinateur soit au moins l'administrateur de l'ordinateur. Les choses se complique encore plus lorsque le parle de Vista et Windows 7.

Mike Gagnon
vendredi 30 juillet 2010 à 13:58:23 | Re : Erreur OLE - classe non enregistrée sur une machine

stepber

Merci de cette réponse.

L'ordinateur sur lequel se pose mon problème est sous Windows Server 2003 avec Office 2007. Je précise "avec Office 2007" puisque le problème ne se produisait pas lorsqu'il n'y avait pas encore Office 2007, mais hélas cet ordinateur doit obligatoirement l'avoir. C'est pour cela que je pensais à regarder les DLL éventuellement mises à jour par Office 2007, qui sont aussi en dépendances du COMCTL32.OCX.

Sur cet ordinateur, les OCX ont bien été enregistrés sous le compte administrateur (il est de toute façon en général impossible d'exécuter la commande "regsvr32" sans être administrateur). Cependant, l'erreur "Code d'erreur OLE 0x80040154: Classe non enregistrée. Objet OLE ignoré. N° d'enregistrement 19." apparait en utilisant mon application sous ce même compte administrateur.
samedi 31 juillet 2010 à 04:02:49 | Re : Erreur OLE - classe non enregistrée sur une machine

Mike Gagnon

Membre Club

Donc il y possible qu'en installant Office 2007, l'ocx original de ton application a perdu son enregistrement dans la base de registre.
Le meilleur endroit pour mettre les OCX pour ne pas qu'ils se fassent écrasé avec des nouvelles versions,est dans le répertoire de l'application meme.

Mike Gagnon
lundi 2 août 2010 à 09:53:06 | Re : Erreur OLE - classe non enregistrée sur une machine

stepber

Suite à l'installation de Office 2007 sur cet ordinateur, mon application a été réinstallée. Donc ses OCX, dont COMCTL32.OCX, ont été alors enregistrés avec "regsvr32" sans erreur sous le compte administrateur. Office 2007 n'a pas ensuite été modifié, pourtant l'erreur OLE apparait en utilisant mon application sous ce même compte administrateur immédiatement après l'enregistrement des OCX.
Puisque COMCTL32.OCX ne semble pas poser de problème, c'est pour cela que je m'orientais vers les DLL qui sont en dépendances du COMCTL32.OCX, dont notamment COMCTL32.DLL. Est-ce que je dois donc copier toutes ces DLL des répertoires système windows dans le répertoire de mon application avec COMCTL32.OCX (cela concerne kernel32.DLL, user32.DLL, ...) ?


Cette discussion est classée dans : ocx, windows, erreur, dll, comctl32


Répondre à ce message

Sujets en rapport avec ce message

utilisation de DLL [ par gregorian ] Bonjour à tous, Je dois coer une apppli qui fait appel en grande partie à une DLL extérieure et n'ayant jamais travaillé de cette manière, je me retro probleme dll sous windows 98 [ par ducker88 ] Bonjour à tous,Voila mon probleme, je developpe une appli en VFP9 qui dois pouvoir tourner sur les systemes d'exploitation de 98 à XPle probleme est q Héritage depuis une dll [ par elvom ] Bonjour,Je travaille sur un projet VFP9.0 (nommé GTI) qui utilise une dll d'un autre projet VFP9.0 (nommé RFE)Je n'arrive pas à créer une classe fille erreur memo dans le projet.pjt à la compil [ par gregorian ] Bonjour, Lors d'un run de test, j'ai du aller tuer de force le process.Depuis, je ne sais plus compiler mon projet. Je peux faire toutes les modif que tableu ocx foxpro [ par info_maroc ] bonjour,je veux gerer un planning de reservation et j'ai besoin d'un tableau 'ocx' qui permer de gerer les dates, les couleurs, les icones...Merci Erreur OLE [ par zxr_stinger ] Bonjour,J'ai voulu utiliser le code fourni par un membre de la communuaté CS dont voici le lienhttp://www.foxprofr.com/codes/ORIENTATION-IMPRIMATE-MAN API windows [ par captainstf ] Salut à tous!Je travaille actuelle sur l'api windows et je gallère pas mal :1- Je cherche à mettre une application au premier plan, j'utilise :showwin créer une dll a partir de vfp6.0 [ par aumeric ] Bonjour Je voudrais faire une dll qui contient une fonctionexfunction donneheure()return time()Dans mon programme je voudrais appeler cette fonction Foxpro 3 et XP [ par Psy06 ] Bonjour Dans certains cas lors du lancement d'une application développée avec Visual foxpro 3.0 sous window XP je reçois des messages : "c:\windows\sy erreur irrecupérable en impression [ par calenge ] J'ai développé une appli en VFP6 et j'ai régulièrement un plantage violent 'erreur irrécupérable' quand je veux éditer un report. Le problème arrive d


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales