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:

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

  1. Führen Sie LPK_TOOL.EXE auf einem Computer aus, der für die Verwendung des Steuerelements lizenziert ist.

  2. 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".

  3. 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

  1. 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>
  1. 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.

  2. 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