RSS
StartseiteKnowledge LibraryTop 10Impressum

ActiveX Komponenten einfach registrieren

Statt Eingabeaufforderung, können sie ActiveX Komponenten auch über das Kontextmenü registrieren.

ActiveX Komponenten sind schon eine feine Sache, da man ihre Funktionalität auf recht simple Weise nutzen kann ohne diverse Module und Klassen zu dem Projekt hinzuzufügen. Das Hauptargument für ActiveX Komponenten ist jedoch ihre Wiederverwendbarkeit. Warum das Rad neu erfinden, wenn es ein anderer schon entwickelt hat?

Leider haben ActiveX Komponenten auch einen Nachteil: Bevor sie verwendet werden können, müssen sie registriert werden. Im Idealfall erfolgt dies über ein anständiges Setup. Viele Freeware ActiveX Komponenten, die sich in den Weiten des Internets tummeln, kommen meist ohne Setup daher und stellen entsprechende Vorraussetzungen. Doch auch wenn man seinen Entwicklungsrechner in den Sand gesetzt hat und eigenen Komponenten entwickelt hat, ist ein Setup nicht immer vorhanden oder aber nicht mehr aktuell.

Registrieren über die IDE

Nun gibt es mehrere Wege diese Komponenten in der Registrierung zu verewigen. Zum Bespiel den über die Komponentenliste der VB IDE. Wählen Sie dazu Projekt => Komponenten/ Verweise > Durchsuchen und wählen die Datei aus, die registriert werden soll. VB übernimmt hierbei die Registrierung automatisch.

Ebenfalls automatisch registriert, werden Komponenten, die per Drag & Drop auf die VB Werkzeugsammlung gezogen werden. Allerdings werden nur Steuerelemente als Verweis hinzugefügt. ActiveX EXE und DLLs erzeugen eine Fehlermeldung, werden aber dennoch registriert.

Registrieren über die Kommandozeile

Wer sich das Starten der IDE sparen will, greift zur Eingabeaufforderung bzw. dem Ausführen Dialog (Start => Ausführen) und bedient sich den Fähigkeiten von "regsvr32":

regsvr32 "Pfad\Dateiname.dll|ocx"

registriert eine Komponente...

regsvr32 /u "Pfad\Dateiname.dll|ocx"

...de-registriert eine Komponente. Optional können Sie über den Parameter "/s" die Meldungen, die "regsvr32" ausgibt, unterdrücken.

Was macht "regsvr32"? Eigentlich ist es nur ein Loader für die DLL und ruft die Standard Funktionen "DLLRegisterServer" beim registrieren bzw. "DLLUnregisterServer" beim de-registrieren auf, die von jedem ActiveX OCX bzw. jeder ActiveX DLL exportiert werden und somit registriert sich die Komponente selber.

ActiveX EXE Server können nicht mit "regsvr32" registriert werden, da sie diese Standard Registrierungsfunktionen nicht exportieren. ActiveX EXE Server benötigen auch keinen Loader und können so einfach durch Angabe des entsprechenden Parameters über die Kommandozeile registriert werden:

"Pfad\Activex.exe /RegServer

bzw. de-registriert werden:

"Pfad\Activex.exe /UnRegServer

Registrieren über Kontextmenü

Nur ist der Weg über die Kommandozeile nicht immer die komfortabelste Lösung. Wie wäre es statt dessen mit einem Eintrag im Kontextmenü der OCX/DLL oder EXE Dateien? Hierzu können Sie über den Registrierungseditor (regedit) entsprechende Einträge vornehmen. Folgendes Registrierungsskript erledigt das für Sie:

REGEDIT4

[HKEY_CLASSES_ROOT\dllfile]

[HKEY_CLASSES_ROOT\dllfile\shell]

[HKEY_CLASSES_ROOT\dllfile\shell\Register Server]

[HKEY_CLASSES_ROOT\dllfile\shell\Register Server\command]
@="regsvr32.exe \"%1\""

[HKEY_CLASSES_ROOT\dllfile\shell\Unregister Server]

[HKEY_CLASSES_ROOT\dllfile\shell\Unregister Server\command]
@="regsvr32.exe /u \"%1\""


[HKEY_CLASSES_ROOT\.ocx]
@="ocxfile"

[HKEY_CLASSES_ROOT\ocxfile]

[HKEY_CLASSES_ROOT\ocxfile\shell]

[HKEY_CLASSES_ROOT\ocxfile\shell\Register Server]

[HKEY_CLASSES_ROOT\ocxfile\shell\Register Server\command]
@="regsvr32.exe \"%1\""

[HKEY_CLASSES_ROOT\ocxfile\shell\Unregister Server]

[HKEY_CLASSES_ROOT\ocxfile\shell\Unregister Server\command]
@="regsvr32.exe /u \"%1\""


[HKEY_CLASSES_ROOT\exefile]

[HKEY_CLASSES_ROOT\exefile\shell]

[HKEY_CLASSES_ROOT\exefile\shell\Register Server]

[HKEY_CLASSES_ROOT\exefile\shell\Register Server\command]
@="\"%1\" /REGSERVER"

[HKEY_CLASSES_ROOT\exefile\shell\Unregister Server]

[HKEY_CLASSES_ROOT\exefile\shell\Unregister Server\command]
@="\"%1\" /UNREGSERVER"

Erstellen Sie eine neue Textdatei, die Sie z.B. "kontext.reg" nennen, öffnen diese (rechte Maustaste => Bearbeiten) und fügen o.g. Skript dort ein. Danach brauchen Sie die Registrierungsdatei nur noch zusammenführen ((Doppel-) Klick bzw. rechte Maustaste => Zusammenführen).

Tipp: Wenn Sie den vollständigen Pfad zu "regsvr32.exe" angeben, wird der Pfad zur Komponente als langer Dateiname in der Registrierung abgelegt und nicht im kurzen 8.3 Format mit Tilden (Tipp von Michael Lenke). "regsvr32.exe" ist im Normalfall im System(32) Verzeichnis Ihrer Windows Installation zu finden.