Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Befintliga ActiveX-kontroller (tidigare OLE-kontroller) kan användas på Internet utan ändringar. Men du kanske vill ändra kontroller för att förbättra deras prestanda.
Viktigt!
ActiveX är en äldre teknik som inte bör användas för ny utveckling. Mer information om moderna tekniker som ersätter ActiveX finns i ActiveX-kontroller. Stöd för ActiveX-kontroller har blivit inaktuellt i senare versioner av Internet Explorer och stöds inte av moderna webbläsare. Microsoft tillhandahåller inte längre webbtillgängliga ActiveX-komponenter.
När du använder kontrollen på en webbsida finns det ytterligare saker att tänka på. .ocx-filen och alla stödfiler måste finnas på måldatorn eller laddas ned via Internet. Detta gör kodstorlek och nedladdningstid till ett viktigt övervägande. Nedladdningar kan paketeras i en signerad .cab fil. Du kan markera kontrollen som säker för skript och som säker för initiering.
Följande ämnen tas upp i den här artikeln:
Du kan också lägga till optimeringar enligt beskrivningen i ActiveX-kontroller: optimering. Monikers kan användas för att ladda ner egenskaper och stora BLOB:er asynkront, som beskrivs i ActiveX-kontroller på Internet.
Paketeringskod för nedladdning
Mer information om det här ämnet finns i Paketera ActiveX-kontroller.
Codebase-taggen
ActiveX-kontroller bäddas in på webbsidor med hjälp av taggen <OBJECT> . Parametern CODEBASE för taggen <OBJECT> anger var kontrollen ska laddas ned.
CODEBASE kan peka på ett antal olika filtyper.
Använda CODEBASE-taggen med en OCX-fil
CODEBASE="http://example.contoso.com/mycontrol.ocx#version=4,
70,
0,
1086"
Den här lösningen laddar bara ned kontrollens .ocx-fil och kräver att alla stöd-DLL:er redan är installerade på klientdatorn. Detta fungerar för Internet Explorer- och MFC ActiveX-kontroller som skapats med Visual C++, eftersom Internet Explorer levereras med stöd för DLL:er för Visual C++-kontroller. Om en annan webbläsare som är ActiveX-kontrollkompatibel används för att visa den här kontrollen fungerar inte den här lösningen.
Använda CODEBASE-taggen med en INF-fil
CODEBASE="http://example.contoso.com/trustme.inf"
En .inf-fil styr installationen av en .ocx och dess stödfiler. Den här metoden rekommenderas inte eftersom det inte går att signera en .inf-fil (se Signeringskod för pekare vid kodsignering).
Använda CODEBASE-taggen med en CAB-fil
CODEBASE="http://example.contoso.com/acontrol.cab#version=1,
2,
0,
0"
Kabinettfiler är det rekommenderade sättet att paketera ActiveX-kontroller som använder MFC. Om du paketerar en MFC ActiveX-kontroll i en kabinettfil kan en .inf-fil inkluderas för att styra installationen av ActiveX-kontrollen och eventuella beroende DLL:er (till exempel MFC-DLL:er). Om du använder en CAB-fil komprimeras koden automatiskt för snabbare nedladdning. Om du använder en .cab fil för komponentnedladdning går det snabbare att signera hela .cab filen än varje enskild komponent.
Skapa CAB-filer
Verktyg för att skapa kabinettfiler ingår nu i Windows SDK.
Kabinettfilen som pekas på av CODEBASE ska innehålla .ocx-filen för ActiveX-kontrollen och en .inf-fil för att styra installationen. Du skapar kabinettfilen genom att ange namnet på kontrollfilen och en .inf-fil. Inkludera inte beroende DLL:er som kanske redan finns i systemet i den här kabinettfilen. Till exempel paketeras MFC-DLL:er i en separat kabinettfil och refereras till av den kontrollerande .inf-filen.
Mer information om hur du skapar en CAB-fil finns i Skapa en CAB-fil.
INF-filen
I följande exempel, spindial.inf, visas de stödfiler och versionsinformation som behövs för MFC Spindial-kontrollen. mfc42.cab tillhandahålls och signeras av Microsoft.
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
The <OBJECT>-taggen
I följande exempel visas hur du använder taggen <OBJECT> för att paketera MFC Spindial-exempelkontrollen.
<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>
I det här fallet innehåller spindial.cab två filer, spindial.ocx och spindial.inf. Följande kommando skapar kabinettfilen:
C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf
Parametern -s 6144 reserverar utrymme i kabinettet för kodsignering.
Versionstaggen
Observera här att informationen #Version som anges med en CAB-fil gäller för kontrollen som anges av parametern CLASSID för taggen <OBJECT> .
Beroende på vilken version som angetts kan du tvinga fram en nedladdning av din kontroll. Fullständiga specifikationer för taggen OBJECT inklusive CODEBASE-parametern finns i W3C-referensen.
Markera en kontroll som säker för skript och initiera
ActiveX-kontroller som används på webbsidor bör markeras som säkra för skript och säkra för initiering om de i själva verket är säkra. En säker kontroll utför inte disk-I/O eller kommer åt minnet eller registren för en dator direkt.
Kontroller kan markeras som säkra för skript och säkra för initiering via registret. Ändra DllRegisterServer för att lägga till poster som liknar följande för att markera kontrollen som säker för skript och beständighet i registret. En alternativ metod är att implementera IObjectSafety.
Du kommer att definiera GUID:er (globalt unika identifierare) för din kontroll för att markera den som säker för skript och för beständighet. Kontroller som kan skriptas på ett säkert sätt innehåller en registerpost som liknar följande:
HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
Kontroller som kan initieras på ett säkert sätt från beständiga data markeras som säkra för beständighet med en registerpost som liknar:
HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
Lägg till poster som liknar följande (ersätt kontrollens klass-ID i stället för {06889605-B8D0-101A-91F1-00608CEAD5B3}) för att associera dina nycklar med följande klass-ID:
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}
Licensieringsproblem
Om du vill använda en licensierad kontroll på en webbsida måste du kontrollera att licensavtalet tillåter dess användning på Internet och skapa en licenspaketfil (LPK) för den.
En licensierad ActiveX-kontroll läses inte in korrekt på en HTML-sida om datorn som kör Internet Explorer inte är licensierad för att använda kontrollen. Om en licensierad kontroll till exempel skapades med visualisering C++, läses HTML-sidan med kontrollen in korrekt på den dator där kontrollen skapades, men den läses inte in på en annan dator om inte licensinformation ingår.
Om du vill använda en licensierad ActiveX-kontroll i Internet Explorer måste du kontrollera leverantörens licensavtal för att kontrollera att licensen för kontrollen tillåter:
Omfördelning
Användning av kontrollen på Internet
Användning av Codebase-parametern
Om du vill använda en licensierad kontroll på en HTML-sida på en icke-licensierad dator måste du generera en licenspaketfil (LPK). LPK-filen innehåller körningslicenser för licensierade kontroller på HTML-sidan. Den här filen genereras via LPK_TOOL.EXE som medföljer ActiveX SDK.
Skapa en LPK-fil
Kör LPK_TOOL.EXE på en dator som är licensierad för att använda kontrollen.
I dialogrutan Redigeringsverktyg för licenspaket går du till listrutan Tillgängliga kontroller och väljer varje licensierad ActiveX-kontroll som ska användas på HTML-sidan och klickar på Lägg till.
Klicka på Spara och avsluta och ange ett namn för LPK-filen. Då skapas LPK-filen och programmet stängs.
Bädda in en licensierad kontroll på en HTML-sida
- Redigera HTML-sidan. På HTML-sidan infogar du en <OBJEKT-tagg> för License Manager-objektet före andra <OBJEKT-taggar> . License Manager är en ActiveX-kontroll som är installerad med Internet Explorer. Dess klass-ID visas nedan. Ange LPKPath-egenskapen för License Manager-objektet till sökvägen och namnet på LPK-filen. Du kan bara ha en LPK-fil per HTML-sida.
<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
</OBJECT>
Infoga OBJECT-taggen <> för den licensierade kontrollen efter License Manager-taggen.
Till exempel visas en HTML-sida som visar kontrollen Microsoft Masked Edit nedan. Det första klass-ID:t är för License Manager-kontrollen. Det andra klass-ID:t är för kontrollen Maskerad redigering. Ändra taggarna så att de pekar på den relativa sökvägen för den .lpk-fil som du skapade tidigare och lägg till en objekttagg, inklusive klass-ID:t för din kontroll.
<Infoga attributet EMBED> för LPK-filen om du använder plugin-programmet NCompass ActiveX.
Om kontrollen kan visas i andra aktiva aktiverade webbläsare, till exempel Netscape med hjälp av plugin-programmet NCompass ActiveX, måste du lägga till EMBED-syntaxen <> enligt nedan.
<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>
Mer information om kontrolllicensiering finns i ActiveX-kontroller: Licensiering av en ActiveX-kontroll.
Signeringskod
Kodsignering är utformad för att identifiera kodkällan och för att garantera att koden inte har ändrats sedan den signerades. Beroende på webbläsarens säkerhetsinställningar kan användarna varnas innan koden laddas ned. Användare kan välja att lita på vissa certifikatägare eller företag, i vilket fall kod som signerats av de betrodda laddas ned utan förvarning. Kod signeras digitalt för att undvika manipulering.
Se till att den slutliga koden är signerad så att kontrollen kan laddas ned automatiskt utan att du ser betrodda varningsmeddelanden. Mer information om hur du signerar kod finns i dokumentationen om Authenticode i ActiveX SDK och finns i Signera en CAB-fil.
Beroende på säkerhetsnivåinställningar för förtroende och webbläsare kan ett certifikat visas för att identifiera signeringspersonen eller företaget. Om säkerhetsnivån inte är någon, eller om den signerade kontrollens certifikatägare är betrodd, visas inte något certifikat. Mer information om hur webbläsarens säkerhetsinställning avgör om kontrollen laddas ned och ett certifikat visas finns i Säkerhetsnivåer och kontrollbeteende i Internet Explorer .
Digital signering garanterar att koden inte har ändrats sedan den signerades. En hash av koden tas och bäddas in i certifikatet. Denna hash jämförs senare med en hash av koden som tas efter att koden har laddats ned men innan den körs. Företag som Verisign kan tillhandahålla privata och offentliga nycklar som behövs för att signera kod. ActiveX SDK levereras med MakeCert, ett verktyg för att skapa testcertifikat.
Hantera paletten
Containrar bestämmer paletten och gör den tillgänglig som en omgivande egenskap , DISPID_AMBIENT_PALETTE. En container (till exempel Internet Explorer) väljer en palett som används av alla ActiveX-kontroller på en sida för att fastställa sin egen palett. Detta förhindrar att visning flimrar och visar ett konsekvent utseende.
En kontroll kan åsidosätta OnAmbientPropertyChange för att hantera meddelanden om ändringar i paletten.
En kontroll kan åsidosätta OnGetColorSet för att returnera en färguppsättning att använda för att måla paletten. Containrar använder returvärdet för att avgöra om en kontroll är palettmedveten.
Enligt OCX 96-riktlinjerna måste en kontroll alltid förverkliga sin palett i bakgrunden.
Äldre containrar som inte använder egenskapen ambient palette skickar WM_QUERYNEWPALETTE och WM_PALETTECHANGED meddelanden. En kontroll kan åsidosätta OnQueryNewPalette och OnPaletteChanged för att hantera dessa meddelanden.
Internet Explorer: Säkerhetsnivåer och kontrollbeteende för webbläsare
En webbläsare har alternativ för säkerhetsnivå som kan konfigureras av användaren. Eftersom webbsidor kan innehålla aktivt innehåll som potentiellt kan skada en användares dator, tillåter webbläsare användaren att välja alternativ för säkerhetsnivå. Beroende på hur en webbläsare implementerar säkerhetsnivåer kan det hända att en kontroll inte laddas ned alls, eller så visas ett certifikat eller ett varningsmeddelande som gör att användaren vid körning kan välja om kontrollen ska laddas ned eller inte. Beteendet för ActiveX-kontroller under höga, medelhöga och låga säkerhetsnivåer i Internet Explorer visas nedan.
Högsäkerhetsläge
Osignerade kontroller laddas inte ned.
Kontroller med signaturer visar ett certifikat om det är osäkert (en användare kan välja att alltid lita på kod från denna certifikatägare framöver).
Endast kontroller som har markerats som säkra har beständiga data och/eller är skriptbara.
Medelhögt säkerhetsläge
Osignerade kontroller visar en varning innan de laddas ned.
Signerade kontroller visar ett certifikat om det är obetrott.
Kontroller som inte har markerats som säkra visar en varning.
Låg säkerhetsläge
Kontroller laddas ned utan förvarning.
Skript och beständighet sker utan förvarning.
Se även
Programmeringsuppgifter för MFC Internet
Grunderna i MFC Internet Programming
MFC ActiveX-kontroller: Att licensiera en ActiveX-kontroll