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::GetLicInfo
ve 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 RequestLicKey
baş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ı.
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ı CreateInstanceLic
yaparak 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.
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
- 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:
-
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::CreateInstanceLic
bir parçası olarak çerçeve tarafından çağrılır. -
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
VerifyLicenseKey
birlikte kullanılır. Bu işlev, işlemeninIClassFactory2::RequestLicKey
bir parçası olarak çerçeve tarafından çağrılır. -
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 CSampleCtrl
factory
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
, GetLicenseKey
ve 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 AfxVerifyLicFile
yerine 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ı.