Upgrading eines vorhandenen ActiveX-Steuerelements
Vorhandene ActiveX-Steuerelemente (vormals OLE-Steuerelemente) können ohne Änderung im Internet verwendet werden. Sie können jedoch Steuerelemente ändern, um die Leistung zu verbessern.
Wichtig
ActiveX ist eine Legacytechnologie, die nicht für neue Software verwendet werden sollte. Weitere Informationen zu modernen Technologien, die ActiveX ablösen, finden Sie unter ActiveX-Steuerelemente. Die Unterstützung für ActiveX-Steuerelemente wurde in späteren Versionen von Internet Explorer nicht mehr unterstützt und wird von modernen Browsern nicht unterstützt. Microsoft stellt keine Webzugriffs-ActiveX-Komponenten mehr bereit.
Wenn Sie Ihr Steuerelement auf einer Webseite verwenden, gibt es zusätzliche Überlegungen. Die OCX-Datei und alle unterstützenden Dateien müssen sich auf dem Zielcomputer befinden oder über das Internet heruntergeladen werden. Dadurch wird die Codegröße und die Downloadzeit zu einem wichtigen Aspekt. Downloads können in einer signierten CAB-Datei verpackt werden. Sie können Ihr Steuerelement als sicher für skripting markieren und als sicher für die Initialisierung kennzeichnen.
In diesem Artikel werden die folgenden Themen behandelt:
Markieren eines Steuerelements Tresor für Skripts und Initialisierung
Internet Explorer-Browser Tresor ty Levels und Steuerelementverhalten
Sie können auch Optimierungen hinzufügen, wie in ActiveX-Steuerelementen beschrieben: Optimierung. Monikers können verwendet werden, um Eigenschaften und große BLOBs asynchron herunterzuladen, wie in ActiveX-Steuerelementen im Internet beschrieben.
Packen von Code zum Herunterladen
Weitere Informationen zu diesem Thema finden Sie unter Packen von ActiveX-Steuerelementen.
Das CODEBASE-Tag
ActiveX-Steuerelemente werden mithilfe des <OBJECT>
Tags in Webseiten eingebettet. Der CODEBASE
Parameter des <OBJECT>
Tags gibt den Speicherort an, von dem das Steuerelement heruntergeladen werden soll. CODEBASE
kann erfolgreich auf eine Reihe verschiedener Dateitypen zeigen.
Verwenden des CODEBASE-Tags mit einer OCX-Datei
CODEBASE="http://example.contoso.com/mycontrol.ocx#version=4,
70,
0,
1086"
Diese Lösung lädt nur die OCX-Datei des Steuerelements herunter und erfordert, dass alle unterstützenden DLLs bereits auf dem Clientcomputer installiert werden. Dies funktioniert für Internet Explorer- und MFC-ActiveX-Steuerelemente, die mit Visual C++ erstellt wurden, da Internet Explorer mit den unterstützenden DLLs für Visual C++-Steuerelemente ausgeliefert wird. Wenn ein anderer Internetbrowser, der ActiveX-Steuerelementfähig ist, zum Anzeigen dieses Steuerelements verwendet wird, funktioniert diese Lösung nicht.
Verwenden des CODEBASE-Tags mit einer INF-Datei
CODEBASE="http://example.contoso.com/trustme.inf"
Eine INF-Datei steuert die Installation einer OCX-Datei und deren Unterstützenden Dateien. Diese Methode wird nicht empfohlen, da es nicht möglich ist, eine INF-Datei zu signieren (siehe Signierungscode für Zeiger bei der Codesignierung).
Verwenden des CODEBASE-Tags mit einer CAB-Datei
CODEBASE="http://example.contoso.com/acontrol.cab#version=1,
2,
0,
0"
Cab-Dateien sind die empfohlene Methode zum Verpacken von ActiveX-Steuerelementen, die MFC verwenden. Durch das Verpacken eines MFC ActiveX-Steuerelements in einer Cab-Datei kann eine INF-Datei eingeschlossen werden, um die Installation des ActiveX-Steuerelements und abhängiger DLLs (z. B. die MFC-DLLs) zu steuern. Durch die Verwendung einer CAB-Datei wird der Code automatisch komprimiert, um schneller herunterzuladen. Wenn Sie eine CAB-Datei für den Komponentendownload verwenden, ist es schneller, die gesamte CAB-Datei zu signieren als jede einzelne Komponente.
Erstellen von CAB-Dateien
Tools zum Erstellen von Cab-Dateien sind jetzt Teil des Windows SDK.
Die CAB-Datei, auf die CODEBASE
verwiesen wird, sollte die OCX-Datei für Ihr ActiveX-Steuerelement und eine INF-Datei enthalten, um die Installation zu steuern. Sie erstellen die CAB-Datei, indem Sie den Namen der Steuerelementdatei und eine INF-Datei angeben. Fügen Sie keine abhängigen DLLs hinzu, die möglicherweise bereits auf dem System in dieser CAB-Datei vorhanden sind. Die MFC-DLLs werden z. B. in einer separaten CAB-Datei verpackt und von der steuernden INF-Datei referenziert.
Ausführliche Informationen zum Erstellen einer CAB-Datei finden Sie unter Erstellen einer CAB-Datei.
Die INF-Datei
Das folgende Beispiel, spindial.inf, listet die unterstützenden Dateien und die Versionsinformationen auf, die für das MFC Spindial-Steuerelement erforderlich sind. Die mfc42.cab wird von Microsoft bereitgestellt und signiert.
Contents of spindial.inf:
[mfc42installer]
file-win32-x86=http://example.contoso.com/controls/vc/mfc42.cab
[Olepro32.dll] - FileVersion=5,
0,
4261,
0
[Mfc42.dll] - FileVersion=6,
0,
8168,
0
[Msvcrt.dll] - FileVersion=6,
0,
8168,
0
Das <OBJECT-Tag>
Das folgende Beispiel veranschaulicht die Verwendung des <OBJECT>
Tags zum Verpacken des MFC Spindial-Beispielsteuerelements.
<OBJECT ID="Spindial1" WIDTH=100 HEIGHT=51
CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
CODEBASE="http://example.contoso.com/spindial.cab#Version=1,0,0,001">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
<PARAM NAME="NeedlePosition" VALUE="2">
</OBJECT>
In diesem Fall enthält spindial.cab zwei Dateien, spindial.ocx und spindial.inf. Mit dem folgenden Befehl wird die CAB-Datei erstellt:
C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf
Der -s 6144
Parameter reserviert Platz im Kabinett für die Codesignatur.
Das Versionstag
Beachten Sie hier, dass die #Version
mit einer CAB-Datei angegebenen Informationen auf das durch den CLASSID-Parameter des <OBJECT>
Tags angegebene Steuerelement angewendet werden.
Je nach der angegebenen Version können Sie das Herunterladen des Steuerelements erzwingen. Vollständige Spezifikationen des OBJECT
Tags, einschließlich des CODEBASE-Parameters , finden Sie in der W3C-Referenz.
Markieren eines Steuerelements Tresor für Skripts und Initialisierung
ActiveX-Steuerelemente, die auf Webseiten verwendet werden, sollten als sicher für skripting und sicher für die Initialisierung gekennzeichnet werden, wenn sie tatsächlich sicher sind. Eine sichere Steuerung führt keine Datenträger-E/A aus oder greift direkt auf den Speicher oder die Registrierung eines Computers zu.
Steuerelemente können als sicher für skripting und sicher für die Initialisierung über die Registrierung gekennzeichnet werden. Ändern Sie DllRegisterServer
diese Änderung, um Einträge hinzuzufügen, die dem folgenden ähneln, um das Steuerelement als sicher für Skripts und Persistenz in der Registrierung zu kennzeichnen. Eine alternative Methode ist die Implementierung IObjectSafety
.
Sie definieren GUIDs (Globally Unique Identifiers) für Ihr Steuerelement, um sie für Skripterstellung und Persistenz zu kennzeichnen. Steuerelemente, die sicher skriptiert werden können, enthalten einen Registrierungseintrag ähnlich wie die folgenden:
HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
Steuerelemente, die sicher aus persistenten Daten initialisiert werden können, sind für Persistenz mit einem Registrierungseintrag wie folgt gekennzeichnet:
HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
Fügen Sie Einträge ähnlich wie folgt hinzu (ersetzen Sie anstelle der {06889605-B8D0-101A-91F1-00608CEAD5B3}
Klassen-ID Ihres Steuerelements), um Die Schlüssel der folgenden Klassen-ID zuzuordnen:
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
Lizenzierungsprobleme
Wenn Sie ein lizenziertes Steuerelement auf einer Webseite verwenden möchten, müssen Sie überprüfen, ob der Lizenzvertrag die Verwendung im Internet zulässt und eine Lizenzpaketdatei (License Package File, LPK) dafür erstellt.
Ein lizenziertes ActiveX-Steuerelement wird nicht ordnungsgemäß auf einer HTML-Seite geladen, wenn der Computer, auf dem Internet Explorer ausgeführt wird, nicht für die Verwendung des Steuerelements lizenziert ist. Wenn beispielsweise ein lizenziertes Steuerelement mit Visual C++ erstellt wurde, wird die HTML-Seite, die das Steuerelement verwendet, ordnungsgemäß auf dem Computer geladen, auf dem das Steuerelement erstellt wurde, aber es wird nicht auf einem anderen Computer geladen, es sei denn, Lizenzinformationen sind enthalten.
Um ein lizenziertes ActiveX-Steuerelement in Internet Explorer zu verwenden, müssen Sie den Lizenzvertrag des Anbieters überprüfen, um zu überprüfen, ob die Lizenz für das Steuerelement folgendes zulässt:
Weiterverteilung
Verwendung des Steuerelements im Internet
Verwenden des Codebase-Parameters
Um ein lizenziertes Steuerelement auf einer HTML-Seite auf einem nicht lizenzierten Computer zu verwenden, müssen Sie eine Lizenzpaketdatei (LICENSE Package File, LPK) generieren. Die LPK-Datei enthält Laufzeitlizenzen für lizenzierte Steuerelemente auf der HTML-Seite. Diese Datei wird über LPK_TOOL.EXE generiert, das im Lieferumfang des ActiveX SDK enthalten ist.
So erstellen Sie eine LPK-Datei
Führen Sie LPK_TOOL.EXE auf einem Computer aus, der für die Verwendung des Steuerelements lizenziert ist.
Wählen Sie im Dialogfeld "Lizenzpaketerstellungstool" im Listenfeld "Verfügbare Steuerelemente" jedes lizenzierte ActiveX-Steuerelement aus, das auf der HTML-Seite verwendet wird, und klicken Sie auf "Hinzufügen".
Klicken Sie auf Speichern und Beenden, und geben Sie einen Namen für die LPK-Datei ein. Dadurch wird die LPK-Datei erstellt und die Anwendung geschlossen.
So betten Sie ein lizenziertes Steuerelement auf einer HTML-Seite ein
- Bearbeiten Sie Ihre HTML-Seite. Fügen Sie auf der HTML-Seite ein <OBJECT-Tag> für das License Manager-Objekt vor anderen <OBJECT-Tags> ein. Der Lizenz-Manager ist ein ActiveX-Steuerelement, das mit Internet Explorer installiert ist. Die Klassen-ID wird unten angezeigt. Legen Sie die LPKPath-Eigenschaft des License Manager-Objekts auf den Pfad und den Namen der LPK-Datei fest. Sie können pro HTML-Seite nur eine LPK-Datei haben.
<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
</OBJECT>
Fügen Sie das <OBJECT-Tag> für Ihr lizenziertes Steuerelement nach dem License Manager-Tag ein.
Beispielsweise wird unten eine HTML-Seite mit dem Microsoft Masked Edit-Steuerelement angezeigt. Die erste Klassen-ID ist für das Lizenz-Manager-Steuerelement, die zweite Klassen-ID ist für das Steuerelement "Maskierte Bearbeitung". Ändern Sie die Tags so, dass sie auf den relativen Pfad der zuvor erstellten LPK-Datei zeigen, und fügen Sie ein Objekttag einschließlich der Klassen-ID für Ihr Steuerelement hinzu.
Fügen Sie das <EMBED-Attribut> für Ihre LPK-Datei ein, wenn Sie das NCompass ActiveX-Plug-In verwenden.
Wenn Ihr Steuerelement möglicherweise in anderen aktivierten Active-Browsern angezeigt wird , z. B. Netscape mit dem NCompass ActiveX-Plug-In, müssen Sie die <EMBED-Syntax> wie unten gezeigt hinzufügen.
<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="maskedit.lpk">
<EMBED SRC = "maskedit.LPK">
</OBJECT>
<OBJECT CLASSID="clsid:C932BA85-4374-101B-A56C-00AA003668DC" WIDTH=100 HEIGHT=25>
</OBJECT>
Weitere Informationen zur Steuerelementlizenzierung finden Sie unter ActiveX-Steuerelemente: Lizenzierung eines ActiveX-Steuerelements.
Signaturcode
Die Codesignatur wurde entwickelt, um die Codequelle zu identifizieren und sicherzustellen, dass sich der Code seit dem Signieren nicht geändert hat. Je nach Browsersicherheitseinstellungen werden Benutzer möglicherweise vor dem Herunterladen des Codes gewarnt. Benutzer können bestimmten Zertifikatbesitzern oder Unternehmen vertrauen. In diesem Fall wird der von diesen vertrauenswürdigen Code ohne Warnung heruntergeladen. Code ist digital signiert, um Manipulationen zu vermeiden.
Stellen Sie sicher, dass Der endgültige Code signiert ist, damit Ihr Steuerelement automatisch heruntergeladen werden kann, ohne Vertrauenswürdige Warnmeldungen anzuzeigen. Ausführliche Informationen zum Signieren von Code finden Sie in der Dokumentation zu Authenticode im ActiveX SDK und unter Signieren einer CAB-Datei.
Abhängig von den Einstellungen auf Sicherheitsstufe "Vertrauen" und "Browsersicherheit" wird möglicherweise ein Zertifikat angezeigt, um die Signaturperson oder das Unternehmen zu identifizieren. Wenn die Sicherheitsstufe keine ist oder der Zertifikatbesitzer des signierten Steuerelements vertrauenswürdig ist, wird kein Zertifikat angezeigt. Weitere Informationen dazu, wie die Sicherheitseinstellung des Browsers bestimmt, ob Das Steuerelement heruntergeladen und ein Zertifikat angezeigt wird, finden Sie unter Internet Explorer-Browser Tresor ty Levels and Control Behavior.
Der Code für digitale Signaturgarantien wurde seit der Signatur nicht geändert. Ein Hash des Codes wird übernommen und in das Zertifikat eingebettet. Dieser Hash wird später mit einem Hash des Codes verglichen, der nach dem Herunterladen des Codes übernommen wurde, aber bevor er ausgeführt wird. Unternehmen wie Verisign können private und öffentliche Schlüssel bereitstellen, die zum Signieren von Code erforderlich sind. Das ActiveX SDK wird mit MakeCert ausgeliefert, einem Hilfsprogramm zum Erstellen von Testzertifikaten.
Verwalten der Palette
Container bestimmen die Palette und stellen sie als Umgebungseigenschaft DISPID_AMBIENT_PALETTE zur Verfügung. Ein Container (z. B. Internet Explorer) wählt eine Palette aus, die von allen ActiveX-Steuerelementen auf einer Seite verwendet wird, um ihre eigene Palette zu bestimmen. Dadurch wird verhindert, dass die Anzeige flackert und ein einheitliches Erscheinungsbild darstellt.
Ein Steuerelement kann die Benachrichtigung über Änderungen an der Palette außer Kraft setzen OnAmbientPropertyChange
.
Ein Steuerelement kann außer Kraft setzen OnGetColorSet
, um einen Farbsatz zum Zeichnen der Palette zurückzugeben. Container verwenden den Rückgabewert, um zu ermitteln, ob ein Steuerelement palettenfähig ist.
Unter OCX 96-Richtlinien muss ein Steuerelement immer seine Palette im Hintergrund realisieren.
Ältere Container, die die Umgebungspaletteneigenschaft nicht verwenden, senden WM_QUERYNEWPALETTE und WM_PALETTECHANGED Nachrichten. Ein Steuerelement kann diese Nachrichten außer Kraft setzen OnQueryNewPalette
und OnPaletteChanged
verarbeiten.
Internet Explorer-Browser Tresor ty Levels und Steuerelementverhalten
Ein Browser verfügt über Optionen zur Sicherheitsstufe, die vom Benutzer konfiguriert werden können. Da Webseiten aktive Inhalte enthalten können, die möglicherweise den Computer eines Benutzers beschädigen, können Browser dem Benutzer optionen für die Sicherheitsstufe auswählen. Je nachdem, wie ein Browser Sicherheitsstufen implementiert, wird ein Steuerelement möglicherweise gar nicht heruntergeladen oder zeigt ein Zertifikat oder eine Warnmeldung an, damit der Benutzer zur Laufzeit auswählen kann, ob das Steuerelement heruntergeladen werden soll. Das Verhalten von ActiveX-Steuerelementen unter hohen, mittleren und niedrigen Sicherheitsstufen in Internet Explorer ist unten aufgeführt.
Modus für hohe Tresor ty
Nicht signierte Steuerelemente werden nicht heruntergeladen.
Signierte Steuerelemente zeigen ein Zertifikat an, wenn es nicht vertrauenswürdig ist (ein Benutzer kann von jetzt an eine Option auswählen, um immer Code von diesem Zertifikatbesitzer zu vertrauen).
Nur steuerelemente, die als sicher gekennzeichnet sind, verfügen über dauerhafte Daten und/oder können skriptfähig sein.
Mittlerer Tresor ty-Modus
Nicht signierte Steuerelemente zeigen vor dem Herunterladen eine Warnung an.
Signierte Steuerelemente zeigen ein Zertifikat an, wenn dies nicht vertrauenswürdig ist.
Steuerelemente, die nicht als sicher gekennzeichnet sind, zeigen eine Warnung an.
Niedriger Tresor ty-Modus
Steuerelemente werden ohne Warnung heruntergeladen.
Skripting und Persistenz treten ohne Warnung auf.
Siehe auch
MFC-Internetprogrammierungsaufgaben
Grundlagen der MFC-Internetprogrammierung
MFC-ActiveX-Steuerelemente: Lizenzieren eines ActiveX-Steuerelements