Aracılığıyla paylaş


Varolan Bir ActiveX Denetimini Güncelleştirme

Mevcut ActiveX denetimleri (eski adıYLA OLE denetimleri) değişiklik yapılmadan İnternet'te kullanılabilir. Ancak, performanslarını geliştirmek için denetimleri değiştirmek isteyebilirsiniz.

Önemli

ActiveX, yeni geliştirme için kullanılmaması gereken eski bir teknolojidir. ActiveX'in yerine geçen modern teknolojiler hakkında daha fazla bilgi için bkz . ActiveX Denetimleri. ActiveX denetimleri desteği Internet Explorer'ın sonraki sürümlerinde kullanımdan kaldırılmıştır ve modern tarayıcılar tarafından desteklenmez. Microsoft artık web'de erişilebilir ActiveX bileşenleri sağlamaz.

Web sayfasında denetiminizi kullanırken dikkat edilmesi gereken ek noktalar vardır. .ocx dosyası ve tüm destekleyici dosyalar hedef makinede olmalıdır veya İnternet üzerinden indirilmelidir. Bu, kod boyutunu ve indirme süresini önemli bir nokta haline getirir. İndirmeler imzalı bir .cab dosyasında paketlenebilir. Denetiminizi betik oluşturma için güvenli ve başlatma için güvenli olarak işaretleyebilirsiniz.

Bu makalede aşağıdaki konular ele alınmaktadır:

Ayrıca, ActiveX Denetimleri: İyileştirme bölümünde açıklandığı gibi iyileştirmeler de ekleyebilirsiniz. Adlar, İnternet'teki ActiveX Denetimleri'nde açıklandığı gibi özellikleri ve büyük BLOB'ları zaman uyumsuz olarak indirmek için kullanılabilir.

İndirme için Paketleme Kodu

Bu konu hakkında daha fazla bilgi için bkz . ActiveX Denetimlerini Paketleme.

CODEBASE Etiketi

ActiveX denetimleri, etiketi kullanılarak Web sayfalarına <OBJECT> eklenir. CODEBASE etiketi parametresi<OBJECT>, denetimin indirildiği konumu belirtir. CODEBASE bir dizi farklı dosya türünü başarıyla işaret edebilir.

CODEBASE Etiketini OCX Dosyasıyla Kullanma

CODEBASE="http://example.contoso.com/mycontrol.ocx#version=4,
    70,
    0,
    1086"

Bu çözüm yalnızca denetimin .ocx dosyasını indirir ve tüm destekleyici DLL'lerin istemci makinesine zaten yüklenmesini gerektirir. Bu, Internet Explorer, Visual C++ denetimleri için destekleyici DLL'lerle birlikte geldiği için Visual C++ ile oluşturulan Internet Explorer ve MFC ActiveX denetimleri için çalışır. Bu denetimi görüntülemek için ActiveX denetimi özellikli başka bir İnternet tarayıcısı kullanılırsa, bu çözüm çalışmaz.

CODEBASE Etiketini INF Dosyası ile Kullanma

CODEBASE="http://example.contoso.com/trustme.inf"

.inf dosyası bir .ocx ve destekleyici dosyalarının yüklenmesini denetler. Bir .inf dosyasını imzalamak mümkün olmadığından bu yöntem önerilmez (bkz . Kod imzalama işaretçileri için İmzalama Kodu ).

CODEBASE Etiketini CAB Dosyası ile Kullanma

CODEBASE="http://example.contoso.com/acontrol.cab#version=1,
    2,
    0,
    0"

Dolap dosyaları, MFC kullanan ActiveX denetimlerini paketlemenin önerilen yoludur. MFC ActiveX denetimini bir dolap dosyasında paketlemek, ActiveX denetiminin ve bağımlı DLL'lerin (MFC DLL'leri gibi) yüklenmesini denetlemek için bir .inf dosyasının eklenmesine olanak tanır. CAB dosyası kullanmak, daha hızlı indirmek için kodu otomatik olarak sıkıştırır. Bileşen indirme için bir .cab dosyası kullanıyorsanız, .cab dosyasının tamamını imzalamak her bileşene göre daha hızlıdır.

CAB Dosyaları Oluşturma

Dolap dosyaları oluşturma araçları artık Windows SDK'sının bir parçasıdır.

tarafından işaret edilen CODEBASE dolap dosyası, ActiveX denetiminiz için .ocx dosyasını ve yüklemesini denetlemek için bir .inf dosyası içermelidir. Dolap dosyasını, denetim dosyanızın adını ve bir .inf dosyasını belirterek oluşturursunuz. Bu dolap dosyasında sistemde zaten var olabilecek bağımlı DLL'leri eklemeyin. Örneğin, MFC DLL'leri ayrı bir dolap dosyasında paketlenir ve denetlenen .inf dosyası tarafından başvurulur.

CAB dosyası oluşturma hakkında ayrıntılı bilgi için bkz . CAB Dosyası Oluşturma.

INF Dosyası

Aşağıdaki örnek olan spindial.inf, MFC Spindial denetimi için gereken destekleyici dosyaları ve sürüm bilgilerini listeler. mfc42.cab, Microsoft tarafından sağlanır ve imzalanır.

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

<OBJECT> Etiketi

Aşağıdaki örnekte, MFC Spindial örnek denetimini paketlemek için etiketinin kullanılması <OBJECT> gösterilmektedir.

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

Bu durumda, spindial.cab iki dosya içerir: spindial.ocx ve spindial.inf. Aşağıdaki komut dolap dosyasını oluşturur:

C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf

parametresi, -s 6144 kod imzalama için kabinde yer ayırır.

Sürüm Etiketi

Burada#Version, CAB dosyasıyla belirtilen bilgilerin etiketin CLASSID parametresi tarafından belirtilen denetime uygulandığını <OBJECT> unutmayın.

Belirtilen sürüme bağlı olarak, denetiminizin indirilmesini zorlayabilirsiniz. CODEBASE parametresi dahil olmak üzere etiketin OBJECT tam belirtimleri için W3C başvurusuna bakın.

Komut Dosyası Oluşturma ve Başlatma için Denetim Kasa İşaretleme

Web sayfalarında kullanılan ActiveX denetimleri betik oluşturma için güvenli olarak işaretlenmeli ve aslında güvenliyse başlatma için güvenli olarak işaretlenmelidir. Güvenli denetim disk GÇ gerçekleştirmez veya bir makinenin belleğine veya kayıtlarına doğrudan erişmez.

Denetimler betik oluşturma için güvenli ve kayıt defteri aracılığıyla başlatma için güvenli olarak işaretlenebilir. Denetimi kayıt defterinde betik oluşturma ve kalıcılık açısından güvenli olarak işaretlemek üzere aşağıdakine benzer girdiler eklemek için değiştirin DllRegisterServer . Alternatif bir yöntem uygulamaktır IObjectSafety.

Denetiminizi betik oluşturma ve kalıcılık açısından güvenli olarak işaretlemek için GUID'ler (Genel Olarak Benzersiz Tanımlayıcılar) tanımlayacaksınız. Güvenli bir şekilde betik oluşturulabilen denetimler aşağıdakine benzer bir kayıt defteri girdisi içerir:

HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}

Kalıcı verilerden güvenli bir şekilde başlatılabilir denetimler, aşağıdakine benzer bir kayıt defteri girişiyle kalıcılık için güvenli olarak işaretlenir:

HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}

Anahtarlarınızı aşağıdaki sınıf kimliğiyle {06889605-B8D0-101A-91F1-00608CEAD5B3}ilişkilendirmek için aşağıdakine benzer girdiler ekleyin (yerine denetiminizin sınıf kimliğini değiştirerek):

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}

Lisanslama Sorunları

Web sayfasında lisanslı denetim kullanmak istiyorsanız, lisans sözleşmesinin İnternet'te kullanımına izin verdiğinden emin olmanız ve bunun için bir lisans paketi dosyası (LPK) oluşturmanız gerekir.

Internet Explorer çalıştıran bilgisayar denetimi kullanmak için lisanslı değilse, lisanslı bir ActiveX denetimi HTML sayfasında düzgün yüklenmez. Örneğin, visual C++ kullanılarak lisanslı bir denetim oluşturulduysa, denetimi kullanan HTML sayfası denetimin oluşturulduğu bilgisayara düzgün yüklenir, ancak lisans bilgileri dahil edilmediği sürece farklı bir bilgisayara yüklenmez.

Internet Explorer'da lisanslı bir ActiveX denetimi kullanmak için, satıcının lisans sözleşmesini denetleerek denetim lisansının aşağıdakilere izin verdiğini doğrulamanız gerekir:

  • Yeniden Dağıtım

  • denetimin İnternet'te kullanımı

  • Codebase parametresinin kullanımı

Lisanssız bir makinedeki HTML sayfasında lisanslı denetim kullanmak için bir lisans paketi dosyası (LPK) oluşturmanız gerekir. LPK dosyası, HTML sayfasındaki lisanslı denetimler için çalışma zamanı lisansları içerir. Bu dosya, ActiveX SDK ile birlikte gelen LPK_TOOL.EXE aracılığıyla oluşturulur.

LPK dosyası oluşturmak için

  1. LPK_TOOL.EXE dosyasını denetimi kullanmak üzere lisanslı bir bilgisayarda çalıştırın.

  2. Lisans Paketi Yazma Aracı iletişim kutusundaki Kullanılabilir Denetimler liste kutusunda, HTML sayfasında kullanılacak her lisanslı ActiveX denetimini seçin ve Ekle'ye tıklayın.

  3. Kaydet ve Çık'a tıklayın ve LPK dosyası için bir ad yazın. Bu işlem LPK dosyasını oluşturur ve uygulamayı kapatır.

BIR HTML sayfasına lisanslı denetim eklemek için

  1. HTML sayfanızı düzenleyin. HTML sayfasında, Diğer OBJECT> etiketlerinin önüne <Lisans Yöneticisi nesnesi için bir <OBJECT> etiketi ekleyin. Lisans Yöneticisi, Internet Explorer ile yüklenen bir ActiveX denetimidir. Sınıf kimliği aşağıda gösterilmiştir. Lisans Yöneticisi nesnesinin LPKPath özelliğini LPK dosyasının yoluna ve adına ayarlayın. HTML sayfası başına yalnızca bir LPK dosyanız olabilir.
<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
</OBJECT>
  1. Lisans Yöneticisi etiketinden <sonra lisanslı denetiminizin OBJECT> etiketini ekleyin.

    Örneğin, Microsoft Maskeli Düzenleme denetimini görüntüleyen bir HTML sayfası aşağıda gösterilmiştir. Birinci sınıf kimliği Lisans Yöneticisi denetimine, ikinci sınıf kimliği ise Maskelenmiş Düzenleme denetimine yöneliktir. Daha önce oluşturduğunuz .lpk dosyasının göreli yoluna işaret etmek için etiketleri değiştirin ve denetiminizin sınıf kimliğini içeren bir nesne etiketi ekleyin.

  2. <NCompass ActiveX eklentisini kullanıyorsanız LPK dosyanız için EMBED> özniteliğini ekleyin.

    Denetiminiz diğer Etkin etkin tarayıcılarda görüntüleniyorsa (örneğin, NCompass ActiveX eklentisini kullanarak Netscape), aşağıda gösterildiği gibi EMBED> söz dizimini <eklemeniz gerekir.

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

Denetim lisanslama hakkında daha fazla bilgi için bkz . ActiveX Denetimleri: ActiveX Denetimini Lisanslama.

İmzalama Kodu

Kod imzalama, kodun kaynağını tanımlamak ve kodun imzalandığından beri değişmediğini garanti etmek için tasarlanmıştır. Tarayıcı güvenlik ayarlarına bağlı olarak, kod indirilmeden önce kullanıcılar uyarılabilir. Kullanıcılar belirli sertifika sahiplerine veya şirketlere güvenmeyi seçebilir ve bu durumda güvenilenler tarafından imzalanan kod uyarı olmadan indirilir. Üzerinde oynanmasını önlemek için kod dijital olarak imzalanır.

Güven uyarı iletileri görüntülenmeden denetiminizin otomatik olarak indirilmesi için son kodunuzun imzalandığından emin olun. Kodu imzalama hakkında ayrıntılı bilgi için ActiveX SDK'sında Authenticode belgelerine bakın ve bkz . CAB Dosyası İmzalama.

Güven ve tarayıcı güvenlik düzeyi ayarlarına bağlı olarak, imzayı atan kişiyi veya şirketi tanımlamak için bir sertifika görüntülenebilir. Güvenlik düzeyi yoksa veya imzalı denetimin sertifika sahibine güveniliyorsa, sertifika görüntülenmez. Tarayıcı güvenlik ayarının denetiminizin indirilip indirilmediğini ve bir sertifikanın görüntülenip görüntülenmeyeceğini nasıl belirleyeceği hakkında ayrıntılı bilgi için bkz. Internet Explorer Tarayıcı Kasa Ty Düzeyleri ve Denetim Davranışı.

Dijital imzalama kodun imzalandıktan sonra değişmediğini garanti eder. Kodun karması alınır ve sertifikaya eklenir. Bu karma daha sonra kod indirildikten sonra ancak çalışmadan önce alınan kodun karmasıyla karşılaştırılır. Verisign gibi şirketler, kodu imzalamak için gereken özel ve ortak anahtarları sağlayabilir. ActiveX SDK'sı, test sertifikaları oluşturmaya yönelik bir yardımcı program olan MakeCert ile birlikte gönderilir.

Paleti Yönetme

Kapsayıcılar paleti belirler ve DISPID_AMBIENT_PALETTE bir ortam özelliği olarak kullanılabilir hale getirir. Kapsayıcı (örneğin, Internet Explorer), sayfadaki tüm ActiveX denetimleri tarafından kendi paletini belirlemek için kullanılan bir palet seçer. Bu, ekranın titremesini önler ve tutarlı bir görünüm sunar.

Bir denetim, palette yapılan değişikliklerin bildirimini işlemek için geçersiz kılabilir OnAmbientPropertyChange .

Bir denetim, paleti çizmek üzere bir renk kümesi döndürmek için geçersiz kılabilir OnGetColorSet . Kapsayıcılar, bir denetimin palete duyarlı olup olmadığını belirlemek için dönüş değerini kullanır.

OCX 96 yönergeleri altında, bir denetim her zaman arka planda paletini gerçekleştirmelidir.

Ortam paleti özelliğini kullanmayan eski kapsayıcılar WM_QUERYNEWPALETTE ve WM_PALETTECHANGED iletileri gönderir. Bir denetim, bu iletileri işlemek için ve'yi OnPaletteChanged geçersiz kılabilirOnQueryNewPalette.

Internet Explorer Tarayıcı Kasa Ty Düzeyleri ve Denetim Davranışı

Tarayıcı, kullanıcı tarafından yapılandırılabilen güvenlik düzeyi seçeneklerine sahiptir. Web sayfaları kullanıcının bilgisayarına zarar verme olasılığı olan etkin içerik içerebileceğinden, tarayıcılar kullanıcının güvenlik düzeyi seçeneklerini belirlemesine olanak tanır. Tarayıcının güvenlik düzeylerini uygulama şekline bağlı olarak, bir denetim hiç indirilmeyebilir veya kullanıcının çalışma zamanında denetimi indirip indirmemeyi seçmesine izin vermek için bir sertifika veya uyarı iletisi görüntüler. Internet Explorer'da yüksek, orta ve düşük güvenlik düzeyleri altındaki ActiveX denetimlerinin davranışı aşağıda listelenmiştir.

Yüksek Kasa Ty Modu

  • İmzasız denetimler indirilmez.

  • İmzalı denetimler güvenilmezse bir sertifika görüntüler (kullanıcı bundan sonra bu sertifika sahibinden gelen koda her zaman güvenme seçeneğini belirleyebilir).

  • Yalnızca güvenli olarak işaretlenen denetimlerde kalıcı veriler bulunur ve/veya betik oluşturulabilir.

Orta Kasa Modu

  • İmzasız denetimler indirmeden önce bir uyarı görüntüler.

  • İmzalı denetimler güvenilmezse bir sertifika görüntüler.

  • Güvenli olarak işaretlenmemiş denetimler bir uyarı görüntüler.

Düşük Kasa Ty Modu

  • Denetimler uyarı olmadan indirilir.

  • Betik oluşturma ve kalıcılık uyarı olmadan gerçekleşir.

Ayrıca bkz.

MFC Internet Programlama Görevleri
MFC Internet Programlama Temelleri
MFC ActiveX Denetimleri: ActiveX Denetimini Lisanslama