Utilisez OCX sans l'enregistrer
est-il possible d'utiliser un ocx (contrôle ActiveX) sur une winform (probablement en l'ajoutant programmatiquement) sans avoir d'abord enregistré l'ocx avec regsrv32?
ce que j'essaie de réaliser, c'est d'activer l'installation xcopy. J'ai eu le "AxInterop". .dll" et " Interop. .dll " fichier généré à partir de ma machine dev.
j'ai vu la possibilité d'appeler un COM dll sans l'enregistrer d'abord ( ProSysLib , selon l'auteur, mais je n'ai pas encore testé), depuis ocx est également basé sur COM, donc je suppose qu'il doit y avoir un moyen de le faire.
4 réponses
Oui, c'est faisable. Vous devez supposer que votre application ne sera déployée que sur Windows XP (ou Windows Server 2003) ou plus tard, et ensuite vous pouvez utiliser ce qui s'appelle 'registration free COM' pour faire cela.
essentiellement, ce que vous faites est de créer un fichier manifest pour le contrôle ActiveX DLL de sorte que le chargeur Windows & DLL COM savent ce que son enregistrement est sans avoir à mettre cela dans le registre.
Une procédure de quoi faire, c'est dans cet article sur MSDN: Activation sans enregistrement des composants COM: un Walkthrough
"à l'Étape 6" et "Step 7" dans cet article contiennent des tout vous aurez besoin.
je viens de l'essayer sur l'un de mes propres programmes C# qui utilise un contrôle de grille ActiveX de Microsoft (l'ancien" MS Flex Grid") et il fonctionne très bien. Assurez-vous de créer un fichier manifeste pour votre application et le COM DLL, et remplacez les bonnes Gides aux bons endroits. Vous pouvez avoir besoin d'utiliser OLEVIEW pour extraire les IDs à utiliser à partir de la DLL ActiveX si vous ne les avez pas à portée de main.
soyez averti que l'utilisation apparemment sans registre COM pour les composants COM écrit dans. NET peut provoquer des accidents au hasard sur Windows XP!
Liens Stackoverflow question où j'ai appris cela, la base de connaissances Microsoft, article visée dans cette question. Il existe un correctif, mais vous n'êtes pas autorisé à redistribuer.
C'est même beaucoup plus simple Dans Visual Studio: il suffit d'aller dans les références, trouver des positions créées par votre ocx (il devrait y avoir 2, AxSomething et quelque chose) et se mettre pour les deux isolés: vrai dans leurs propriétés. Pas de manifestes, pas de code. Vous devez maintenant distribuer votre exe avec le fichier dll contenant ocx. Sur votre machine de développement, l'ocx peut être enregistré.
après 10 heures de recherche Comment exécuter l'application VB6 avec OCX sur Win7 sans l'enregistrer et les droits d'administration, j'ai trouvé peu de solution de clic ici : http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c
besoin de vérifier le Manifeste intégré pour le faire fonctionner. Fonctionne comme un charme !
je ne poster la solution ici, parce que j'ai aussi trouvé cette question ici.