Frage

Ist es möglich, ein OCX (ActiveX Control) für eine WinForm (wahrscheinlich programmlich hinzuzufügen) zu verwenden, ohne dass der OCX mit regsrv32 registriert ist?

Ich versuche es zu erreichen, die XCopy -Installation zu aktivieren. Ich hatte das "axInterop..dll "und" Interop..dll "Datei, die von meinem Entwicklermaschine generiert wird.

Ich habe die Möglichkeit gesehen, eine Komplette anzurufen, ohne sie zuerst zu registrieren (Prosysslib, Nach Angaben des Autors, aber ich habe es noch nicht getestet), da OCX auch COM basiert, gehe ich davon aus, dass es auch eine Möglichkeit geben muss, dies zu tun.

War es hilfreich?

Lösung

Ja, das kann getan werden. Sie müssen davon ausgehen, dass Ihre Anwendung nur unter Windows XP (oder Windows Server 2003) oder später bereitgestellt wird, und dann können Sie das sogenannte "Registrierungsfreie COM" verwenden, um dies zu erreichen.

Im Wesentlichen erstellen Sie eine Manifestdatei für die ActiveX Control DLL, damit die Windows Loader & Com DLL wissen, wie seine Registrierung in die Registrierung eingesetzt werden muss.

Eine Vorgehensweise über das, was in diesem Artikel über MSDN zu tun ist:Registrierungsfreie Aktivierung von COM-Komponenten: eine Vorgehensweise

"Schritt 6" und "Schritt 7" in diesem Artikel enthalten alles du wirst brauchen.

Ich habe es gerade in einem meiner eigenen C# -Programme ausprobiert, bei dem ein Microsoft ActiveX -Gittersteuerung (das alte "MS Flex -Gitter") verwendet wird, und es funktioniert gut. Stellen Sie sicher, dass Sie eine Manifestdatei sowohl für Ihre Anwendung als auch für die COM -DLL erstellen, und ersetzen Sie die entsprechenden Richtlinien an den richtigen Stellen. Möglicherweise müssen Sie Oleview verwenden, um die richtigen IDs aus der ActiveX -DLL auszugraben, wenn Sie sie nicht zur Hand haben.

Andere Tipps

Seien Sie gewarnt, dass anscheinend die in .NET verfasstes registrierungsfreie COM für COM-Komponenten zufällig zu Abstürzen unter Windows XP verursachen kann!

Links: Stackoverflow -Frage Wo ich das gelernt habe, Microsoft KnowledgeBase Artikel in dieser Frage genannt. Es gibt einen Hotfix, aber Sie dürfen ihn nicht umverteilen.

In Visual Studio ist es noch viel einfacher: Gehen Sie einfach zu Referenzen, finden Sie Positionen, die von Ihrem OCX erstellt wurden (es sollte 2, Axsomething und etwas geben) und für beide isoliert: wahr in ihren Eigenschaften. Kein Manifest, kein Code. Sie sollten jetzt Ihre EXE mit DLL -Datei mit OCX verteilen. Auf Ihrer Entwicklungsmaschine kann der OCX registriert werden.

Nach 10 Stunden bei der Suche, wie man die VB6 -App mit OCX auf Win7 ausführt, ohne sie zu registrieren, und die Administratorrechte, fand ich hier nur wenige Klick -Lösung: http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c

Müssen einbetten, um das Manifest zu überprüfen, damit es funktioniert. Funktioniert als Charme!

Ich poste hier eine Lösung, weil ich diese Frage auch hier gefunden habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top