Aracılığıyla paylaş


MFC ActiveX Denetimleri: ActiveX Denetimini Lisanslama

ActiveX denetimlerinin isteğe bağlı bir özelliği olan lisans desteği, denetimi kimlerin kullanabileceklerini veya dağıtabileceklerini denetlemenizi sağlar. (Lisanslama sorunlarıyla ilgili ek tartışmalar için bkz. Mevcut ActiveX Denetimini Yükseltme.)

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

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

Lisanslama uygulayan ActiveX denetimleri, denetim geliştiricisi olarak diğer kişilerin ActiveX denetimini nasıl kullanacağını belirlemenize olanak sağlar. Denetim satın alana ve denetimini sağlarsınız. LIC dosyası, satın alan tarafından denetimi dağıtabileceği ancak dağıtılmayabileceği sözleşmesiyle birlikte. denetimi kullanan bir uygulama ile LIC dosyası. Bu, söz konusu uygulamanın kullanıcılarının önce denetimi sizden lisanslamadan denetimi kullanan yeni uygulamalar yazmasını önler.

ActiveX Denetimi Lisanslamaya Genel Bakış

COleObjectFactory sınıfı, ActiveX denetimleri için lisans desteği sağlamak üzere arabirimindeki IClassFactory2 çeşitli işlevler için bir uygulama sağlar: IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfove IClassFactory2::CreateInstanceLic. Kapsayıcı uygulaması geliştiricisi denetimin bir örneğini oluşturma isteğinde bulununca, GetLicInfo denetiminin olduğunu doğrulamak için çağrısı yapılır. LIC dosyası var. Denetim lisanslıysa, denetimin bir örneği oluşturulabilir ve kapsayıcıya yerleştirilebilir. Geliştirici kapsayıcı uygulamasını oluşturma işlemini tamamladıktan sonra, bu kez için RequestLicKeybaşka bir işlev çağrısı yapılır. Bu işlev, kapsayıcı uygulamasına bir lisans anahtarı (basit bir karakter dizesi) döndürür. Döndürülen anahtar daha sonra uygulamaya eklenir.

Aşağıdaki şekilde, bir kapsayıcı uygulamasının geliştirilmesi sırasında kullanılacak bir ActiveX denetiminin lisans doğrulaması gösterilmektedir. Daha önce belirtildiği gibi, kapsayıcı uygulaması geliştiricisinin uygun olmalıdır. Denetimin bir örneğini oluşturmak için geliştirme makinesine yüklenen LIC dosyası.

Licensed ActiveX control verified at development.
Geliştirme Sırasında Lisanslı ActiveX Denetimini Doğrulama

Aşağıdaki şekilde gösterilen sonraki işlem, son kullanıcı kapsayıcı uygulamasını çalıştırdığında gerçekleşir.

Uygulama başlatıldığında genellikle denetimin bir örneğinin oluşturulması gerekir. Kapsayıcı bunu, eklenmiş lisans anahtarını parametre olarak geçirerek çağrısı CreateInstanceLicyaparak gerçekleştirir. Daha sonra eklenmiş lisans anahtarı ile denetimin lisans anahtarının kendi kopyası arasında bir dize karşılaştırması yapılır. Eşleşme başarılı olursa, denetimin bir örneği oluşturulur ve uygulama normal şekilde yürütülmeye devam eder. öğesinin olduğunu unutmayın. LIC dosyasının denetim kullanıcısının makinesinde mevcut olması gerekmez.

Licensed ActiveX control verified at execution.
Yürütme Sırasında Lisanslı ActiveX Denetimini Doğrulama

Denetim lisansı iki temel bileşenden oluşur: denetim uygulaması DLL'sindeki belirli kod ve lisans dosyası. Kod, iki (veya muhtemelen üç) işlev çağrısından ve bundan sonra telif hakkı bildirimi içeren "lisans dizesi" olarak adlandırılan bir karakter dizeden oluşur. Bu çağrılar ve lisans dizesi denetim uygulamasında ( bulunur. CPP) dosyası. ActiveX Denetim Sihirbazı tarafından oluşturulan lisans dosyası, telif hakkı bildirimi içeren bir metin dosyasıdır. proje adı ile kullanılarak adlandırılır. LIC uzantısı, örneğin SAMPLE. LİSANSI. Tasarım zamanı kullanımı gerekiyorsa lisanslı bir denetime lisans dosyası eşlik etmelidir.

Lisanslı Denetim Oluşturma

Denetim çerçevesini oluşturmak için ActiveX Denetim Sihirbazı'nı kullandığınızda, lisans desteği eklemek kolaydır. Denetimin çalışma zamanı lisansına sahip olması gerektiğini belirttiğinizde, ActiveX Denetim Sihirbazı lisanslama desteği için denetim sınıfına kod ekler. Kod, lisans doğrulaması için anahtar ve lisans dosyası kullanan işlevlerden oluşur. Bu işlevler, denetim lisansını özelleştirmek için de değiştirilebilir. Lisans özelleştirme hakkında daha fazla bilgi için, bu makalenin devamında yer alan ActiveX Denetiminin Lisansını Özelleştirme bölümüne bakın.

Denetim projenizi oluştururken ActiveX Denetim Sihirbazı ile lisanslama desteği eklemek için

  1. MFC ActiveX Denetimi Oluşturma başlığındaki yönergeleri kullanın. ActiveX Denetim Sihirbazı'nın Uygulama Ayarlar sayfası, denetimi çalışma zamanı lisansıyla oluşturma seçeneğini içerir.

ActiveX Denetim Sihirbazı artık temel lisans desteği içeren bir ActiveX denetim çerçevesi oluşturur. Lisans kodunun ayrıntılı açıklaması için sonraki konuya bakın.

Lisanslama Desteği

ActiveX denetimine lisans desteği eklemek için ActiveX Denetim Sihirbazı'nı kullandığınızda, ActiveX Denetim Sihirbazı denetim üst bilgisi ve uygulama dosyalarına lisanslama özelliğini bildiren ve uygulayan kodu ekler. Bu kod, COleObjectFactory içinde bulunan varsayılan uygulamaları geçersiz kılan bir GetLicenseKey üye işlevden ve üye işlevden oluşurVerifyUserLicense. Bu işlevler denetim lisansını alır ve doğrular.

Dekont

Üçüncü bir üye işlevi ActiveX VerifyLicenseKey Denetim Sihirbazı tarafından oluşturulmaz, ancak lisans anahtarı doğrulama davranışını özelleştirmek için geçersiz kılınabilir.

Bu üye işlevleri şunlardır:

  • VerifyUserLicense

    Denetim lisans dosyasının var olup olmadığını denetleyerek denetimin tasarım zamanı kullanımına izin verdiği doğrulanır. Bu işlev, ve işlemlerinin IClassFactory2::GetLicInfo IClassFactory::CreateInstanceLicbir parçası olarak çerçeve tarafından çağrılır.

  • GetLicenseKey

    Denetim DLL'sinden benzersiz bir anahtar istemektedir. Bu anahtar kapsayıcı uygulamasına eklenir ve daha sonra denetimin bir örneğini oluşturmak için ile VerifyLicenseKeybirlikte kullanılır. Bu işlev, işlemenin IClassFactory2::RequestLicKeybir parçası olarak çerçeve tarafından çağrılır.

  • VerifyLicenseKey

    Eklenmiş anahtarın ve denetimin benzersiz anahtarının aynı olduğunu doğrular. Bu, kapsayıcının kullanımı için denetimin bir örneğini oluşturmasına olanak tanır. Bu işlev, işlemenin IClassFactory2::CreateInstanceLic bir parçası olarak çerçeve tarafından çağrılır ve lisans anahtarının özelleştirilmiş doğrulamasını sağlamak için geçersiz kılınabilir. Varsayılan uygulama bir dize karşılaştırması gerçekleştirir. Daha fazla bilgi için, bu makalenin devamında yer alan ActiveX Denetiminin Lisansını Özelleştirme bölümüne bakın.

Üst Bilgi Dosyası Değişiklikleri

ActiveX Denetim Sihirbazı, denetim üst bilgisi dosyasına aşağıdaki kodu yerleştirir. Bu örnekte, 'nin nesnesinin CSampleCtrlfactory iki üye işlevi bildirilir ve biri denetimin varlığını doğrular. LIC dosyası ve denetimi içeren uygulamada kullanılacak lisans anahtarını alan başka bir dosya:

BEGIN_OLEFACTORY(CMyAxUICtrl)        // Class factory and guid
   virtual BOOL VerifyUserLicense();
virtual BOOL GetLicenseKey(DWORD, BSTR FAR*);
END_OLEFACTORY(CMyAxUICtrl)

Uygulama Dosyası Değişiklikleri

ActiveX Denetim Sihirbazı, lisans dosya adını ve lisans dizesini bildirmek için denetim uygulama dosyasına aşağıdaki iki deyimi yerleştirir:

static const TCHAR BASED_CODE _szLicFileName[] = _T("NVC_MFC_AxUI.lic");

static const WCHAR BASED_CODE _szLicString[] = L"Copyright (c) 2006 ";

Dekont

Herhangi bir şekilde değiştirirseniz szLicString , denetimindeki ilk satırı da değiştirmeniz gerekir. LIC dosyası veya lisanslama düzgün çalışmaz.

ActiveX Denetim Sihirbazı, denetim sınıfı VerifyUserLicense ve GetLicenseKey işlevlerini tanımlamak için denetim uygulama dosyasına aşağıdaki kodu yerleştirir:

// CMyAxUICtrl::CMyAxUICtrlFactory::VerifyUserLicense -
// Checks for existence of a user license

BOOL CMyAxUICtrl::CMyAxUICtrlFactory::VerifyUserLicense()
{
   return AfxVerifyLicFile(AfxGetInstanceHandle(), _szLicFileName, _szLicString);
}

// CMyAxUICtrl::CMyAxUICtrlFactory::GetLicenseKey -
// Returns a runtime licensing key

BOOL CMyAxUICtrl::CMyAxUICtrlFactory::GetLicenseKey(DWORD /*dwReserved*/,
   BSTR FAR* pbstrKey)
{
   if (pbstrKey == NULL)
      return FALSE;

   *pbstrKey = SysAllocString(_szLicString);
   return (*pbstrKey != NULL);
}

Son olarak, ActiveX Denetim Sihirbazı denetim projesini değiştirir. IDL dosyası. Lisanslı anahtar sözcük, aşağıdaki örnekte olduğu gibi denetimin ortak sınıf bildirimine eklenir:

[uuid(913E450B-E720-4C71-BCDF-71C96EE98FEB), licensed,
helpstring("MyAxUI Control"), control]
coclass NVC_MFC_AxUI

ActiveX Denetiminin Lisansını Özelleştirme

VerifyUserLicense, GetLicenseKeyve VerifyLicenseKey denetim fabrikası sınıfının sanal üye işlevleri olarak bildirildiğinden, denetimin lisanslama davranışını özelleştirebilirsiniz.

Örneğin, veya VerifyLicenseKey üye işlevlerini geçersiz kılarak VerifyUserLicense denetim için çeşitli lisanslama düzeyleri sağlayabilirsiniz. Bu işlevin içinde, algıladığınız lisans düzeyine göre kullanıcıya hangi özelliklerin veya yöntemlerin gösterilip gösterilmeyebileceğini ayarlayabilirsiniz.

Ayrıca, kullanıcıya denetim oluşturma işleminin VerifyLicenseKey başarısız olduğunu bildirmek için özelleştirilmiş bir yöntem sağlayan işleve kod ekleyebilirsiniz. Örneğin, üye işlevinizde VerifyLicenseKey denetimin başlatılamadığını ve nedenini belirten bir ileti kutusu görüntüleyebilirsiniz.

Dekont

ActiveX denetimi lisans doğrulamasını özelleştirmenin bir diğer yolu da kayıt veritabanını çağırmak AfxVerifyLicFileyerine belirli bir kayıt defteri anahtarı için denetlemektir. Varsayılan uygulama örneği için bu makalenin Uygulama Dosyası Değişiklikleri bölümüne bakın.

Lisanslama sorunları hakkında daha fazla bilgi için bkz. Mevcut ActiveX Denetimini Yükseltme konusunda LisansLama Sorunları.

Ayrıca bkz.

MFC ActiveX Denetimleri
MFC ActiveX Denetim Sihirbazı