Je suis confronté à un lèger problème. J'ai cherché sur Google et rien du
tout.
Ma question :
Comment détecter via code si un composant ActiveX (pas une DLL mais bien un
composant) est inscrit sur une machine ?
Contrainte :
- ne surtout pas se fier à la présence ou non du fichier OCX sur la machine.
L'existance du fichier ne prouve en aucun cas qu'il est bien inscrit.
- ne pas réinscrire sauvagement l'OCX à chaque démarrage de l'application
sans savoir préalablement s'il est déjà inscrit. Un conflit de version
serait une catastrophe.
Détecter une erreur CreateObject ne peut être effectué vue que cela ne
fonctionnerait qu'avec des DLL ActiveX. Donc j'abandonne cette piste.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Guy DETIENNE
Salut ;O)
Cela m'étonne que la méthode CreateObject ne fonctionne qu'avec les DLL ActiveX. Un composant ActiveX est un serveur in-process au même titre qu'une DLL ActiveX.
J'ai fait un test de mon côté avec CreateObject et cela fonctionne bien pour mes contrôles. Question : as-tu entré le bon nom de la classe d'objet ?
Exemple qui marche chez moi (composants TaskPanel de l'Xtreme Suite)
Dim oTest as Object Set oTest = CreateObject("XtremeSuiteControls.TaskPanelCtrl.9.60")
Et aucune erreur.
Vois dans la Registry HKEY_CLASSES_ROOT comment ton composant est référencé. Par exemple pour le TreeView de Microsoft c'est la clé HKEY_CLASSES_ROOTMSComctlLib.TreeCtrl
Guy
"NeoB" a écrit dans le message de news:
Bonjour le groupe,
Je suis confronté à un lèger problème. J'ai cherché sur Google et rien du tout.
Ma question :
Comment détecter via code si un composant ActiveX (pas une DLL mais bien
un
composant) est inscrit sur une machine ?
Contrainte : - ne surtout pas se fier à la présence ou non du fichier OCX sur la
machine.
L'existance du fichier ne prouve en aucun cas qu'il est bien inscrit. - ne pas réinscrire sauvagement l'OCX à chaque démarrage de l'application sans savoir préalablement s'il est déjà inscrit. Un conflit de version serait une catastrophe.
Détecter une erreur CreateObject ne peut être effectué vue que cela ne fonctionnerait qu'avec des DLL ActiveX. Donc j'abandonne cette piste.
Peut-être via le registry ? Je ne sais pas.
Merci pour votre précieuse aide.
NéoB
Salut ;O)
Cela m'étonne que la méthode CreateObject ne fonctionne qu'avec les DLL
ActiveX.
Un composant ActiveX est un serveur in-process au même titre qu'une DLL
ActiveX.
J'ai fait un test de mon côté avec CreateObject et cela fonctionne bien pour
mes contrôles.
Question : as-tu entré le bon nom de la classe d'objet ?
Exemple qui marche chez moi (composants TaskPanel de l'Xtreme Suite)
Dim oTest as Object
Set oTest = CreateObject("XtremeSuiteControls.TaskPanelCtrl.9.60")
Et aucune erreur.
Vois dans la Registry HKEY_CLASSES_ROOT comment ton composant est référencé.
Par exemple pour le TreeView de Microsoft c'est la clé
HKEY_CLASSES_ROOTMSComctlLib.TreeCtrl
Guy
"NeoB" <neob@NOSPAM.skynet.be> a écrit dans le message de
news:uFZ99VKAGHA.2812@TK2MSFTNGP09.phx.gbl...
Bonjour le groupe,
Je suis confronté à un lèger problème. J'ai cherché sur Google et rien du
tout.
Ma question :
Comment détecter via code si un composant ActiveX (pas une DLL mais bien
un
composant) est inscrit sur une machine ?
Contrainte :
- ne surtout pas se fier à la présence ou non du fichier OCX sur la
machine.
L'existance du fichier ne prouve en aucun cas qu'il est bien inscrit.
- ne pas réinscrire sauvagement l'OCX à chaque démarrage de l'application
sans savoir préalablement s'il est déjà inscrit. Un conflit de version
serait une catastrophe.
Détecter une erreur CreateObject ne peut être effectué vue que cela ne
fonctionnerait qu'avec des DLL ActiveX. Donc j'abandonne cette piste.
Cela m'étonne que la méthode CreateObject ne fonctionne qu'avec les DLL ActiveX. Un composant ActiveX est un serveur in-process au même titre qu'une DLL ActiveX.
J'ai fait un test de mon côté avec CreateObject et cela fonctionne bien pour mes contrôles. Question : as-tu entré le bon nom de la classe d'objet ?
Exemple qui marche chez moi (composants TaskPanel de l'Xtreme Suite)
Dim oTest as Object Set oTest = CreateObject("XtremeSuiteControls.TaskPanelCtrl.9.60")
Et aucune erreur.
Vois dans la Registry HKEY_CLASSES_ROOT comment ton composant est référencé. Par exemple pour le TreeView de Microsoft c'est la clé HKEY_CLASSES_ROOTMSComctlLib.TreeCtrl
Guy
"NeoB" a écrit dans le message de news:
Bonjour le groupe,
Je suis confronté à un lèger problème. J'ai cherché sur Google et rien du tout.
Ma question :
Comment détecter via code si un composant ActiveX (pas une DLL mais bien
un
composant) est inscrit sur une machine ?
Contrainte : - ne surtout pas se fier à la présence ou non du fichier OCX sur la
machine.
L'existance du fichier ne prouve en aucun cas qu'il est bien inscrit. - ne pas réinscrire sauvagement l'OCX à chaque démarrage de l'application sans savoir préalablement s'il est déjà inscrit. Un conflit de version serait une catastrophe.
Détecter une erreur CreateObject ne peut être effectué vue que cela ne fonctionnerait qu'avec des DLL ActiveX. Donc j'abandonne cette piste.