Formanty MFC ActiveX: licencjonowanie formantu ActiveX
Wsparcie licencjonowania, opcjonalną funkcją formantów ActiveX umożliwia kontrolowanie, kto może do rozpowszechniania formantu. (Dodatkowe Omówienie licencjonowania, zobacz Licencjonowanie problemy w uaktualnienie istniejącego formantu ActiveX.)
W tym artykule omówiono następujące tematy:
Omówienie licencjonowania formantu ActiveX
Tworzenie licencjonowanego formantu
Wsparcie licencjonowania
Dostosowywanie licencjonowania formantu ActiveX
Formanty ActiveX, które implementują licencjonowania pozwalają jako deweloper formantu, aby ustalić, jak inne osoby wykorzysta formant ActiveX.Nadać nabywcy sterowania z formantem i.Plik LIC, za zgodą, że nabywca może rozpowszechniać kontroli, ale nie.Plik LIC z aplikacją, która korzysta z formantu.Uniemożliwia to użytkownikom tej aplikacji od pisania nowych aplikacji, korzystających z formantu bez licencji pierwszej kontroli ze strony użytkownika.
Omówienie licencjonowania formantu ActiveX
Zapewnienie wsparcia licencjonowania dla formantów ActiveX, COleObjectFactory klasy dostarcza implementację kilku funkcji w IClassFactory2 interfejsu: IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfo, i IClassFactory2::CreateInstanceLic.Kiedy Deweloper aplikacji kontenera występuje z wnioskiem do utworzenia wystąpienia formantu, numer telefonu, aby GetLicInfo jest w celu sprawdzenia, że formant.LIC plik jest obecny.Jeśli formant jest licencjonowane, wystąpienie formantu można tworzyć i umieszczać w tym kontenerze.Po zakończeniu autora konstruowanie aplikacji kontenera, wywołać inną funkcję, tym razem do RequestLicKey, jest wykonane.Ta funkcja zwraca klucz licencji (ciąg znaków proste) do aplikacji kontenera.Zwrócony klucz jest następnie osadzony w aplikacji.
Na poniższym rysunku pokazano Weryfikacja licencji formantu ActiveX, który będzie używany podczas opracowywania aplikacji kontenera.Jak już wspomniano, Deweloper aplikacji kontenera musi być poprawne.Plik LIC zainstalowane na komputerze deweloperskim do utworzenia wystąpienia formantu.
Weryfikacja licencjonowanego formantu ActiveX podczas rozwoju
Następnym procesie pokazano na poniższym rysunku występuje, gdy użytkownik końcowy uruchamia aplikację kontenera.
Gdy aplikacja jest uruchomiona, wystąpienie formantu zwykle musi być utworzony.Kontener rozwiązanie to rozmowy w celu CreateInstanceLic, przekazując jako parametr klucz licencji osadzone.Porównania ciągów następnie rozróżnienia między klucz licencji osadzone i własnych kontroli kopię klucza licencji.Gdy dopasowanie jest pomyślne, tworzone jest wystąpienie formantu, a aplikacja kontynuuje wykonywanie normalnie.Należy zauważyć, że.Plik LIC nie muszą znajdować się na komputerze użytkownika formant.
Weryfikacja licencjonowanego formantu ActiveX podczas wykonywania
Licencjonowanie kontroli składa się z dwóch podstawowych składników: określony kod w celu wykonania kontroli DLL i plik licencji.Kod składa się z dwóch (lub ewentualnie trzy) wywołania funkcji i ciąg znaków, zwanych dalej "ciąg licencji", zawierające informacje o prawach autorskich.Te wywołania i ciąg licencji można znaleźć w implementacji formantu (.Plik CPP).Plik licencji wygenerowany przez kreatora formant ActiveX jest plik tekstowy zawierający informację o prawach autorskich.Nosi się przy użyciu nazwy projektu z.LIC rozszerzenie, na przykład próbki.LIC.Licencjonowanego formantu musi towarzyszyć plik licencji w razie potrzeby Użyj czasu projektowania.
Tworzenie licencjonowanego formantu
Kreator formantu ActiveX umożliwia tworzenie ram kontroli, jest łatwe do obejmują wsparcie licencjonowania.Po określeniu, że formant powinien mieć licencji, Kreatora formantów ActiveX dodaje kod do klasy formantu do obsługi licencjonowania.Kod składa się z funkcji, które używa pliku klucza i licencji podczas weryfikacji licencji.Te funkcje również można modyfikować, aby dostosować formant licencjonowania.Aby uzyskać więcej informacji dotyczących dostosowywania licencji, zobacz Dostosowywanie Licencjonowanie formantu ActiveX opisaną w tym artykule.
Aby dodać obsługę licencjonowania z Kreatora formantów ActiveX podczas tworzenia projektu kontroli
- Należy skorzystać z instrukcji w tworzenia formantu ActiveX MFC.Ustawienia aplikacji strona kreatora formantów ActiveX zawiera opcję, aby utworzyć formant o licencji.
Kreator formantu ActiveX generuje teraz framework formant ActiveX, która zawiera podstawowe wsparcie licencjonowania.Szczegółowe wyjaśnienie kodu licencjonowania Zobacz następny temat.
Wsparcie licencjonowania
Korzystając z Kreatora formantów ActiveX nad dodaniem obsługi licencjonowania w formantu ActiveX, Kreatora formantów ActiveX dodaje kod deklaruje, który implementuje możliwości licencjonowania jest dodawany do nagłówka kontroli i wdrożenia plików.Ten kod składa się z VerifyUserLicense funkcji składowej i GetLicenseKey funkcji członka, które zastępują implementacji domyślne znalezione w COleObjectFactory .Te funkcje pobrać i zweryfikować licencji kontroli.
[!UWAGA]
Funkcję trzeciego członka, VerifyLicenseKey nie jest wygenerowany przez Kreatora formantów ActiveX, ale może być zastąpiona dostosować zachowanie weryfikacji klucza licencji.
Te funkcje składowe są:
-
Sprawdza, czy formant umożliwia użycie czasu projektowania przez sprawdzanie systemu na obecność pliku licencji kontroli.Ta funkcja zostaje wywołana przez architekturę jako część przetwarzania IClassFactory2::GetLicInfo i IClassFactory::CreateInstanceLic.
-
Unikatowy klucz, który żąda od formantu DLL.Ten klucz jest osadzony w aplikacji kontenera i później, używany w połączeniu z VerifyLicenseKey, aby utworzyć wystąpienia formantu.Ta funkcja zostaje wywołana przez architekturę jako część przetwarzania IClassFactory2::RequestLicKey.
-
Sprawdza, czy klucz osadzone i unikatowy klucz formantu są takie same.Pozwala to kontener, aby utworzyć wystąpienia formantu do jego użycia.Ta funkcja zostaje wywołana przez architekturę jako część przetwarzania IClassFactory2::CreateInstanceLic i może zostać zastąpiona w celu zapewnienia weryfikacji dostosowany klucz licencji.Domyślna implementacja wykonuje porównania ciągów.Aby uzyskać więcej informacji, zobacz Dostosowywanie Licencjonowanie formantu ActiveX, a później w tym artykule.
Modyfikacja pliku nagłówka
Kreator formantu ActiveX umieszcza następujący kod w pliku nagłówka.W tym przykładzie dwóch funkcji elementów członkowskich z CSampleCtrlprzez obiekt factory są zadeklarowane, który sprawdza obecność formantu.Plik LIC oraz drugą, która pobiera klucz licencji do użycia w aplikacji zawierającej formant:
BEGIN_OLEFACTORY(CMyAxUICtrl) // Class factory and guid
virtual BOOL VerifyUserLicense();
virtual BOOL GetLicenseKey(DWORD, BSTR FAR*);
END_OLEFACTORY(CMyAxUICtrl)
Modyfikacje plików implementacji
Kreator formantu ActiveX umieszcza dwie poniższe instrukcje w pliku implementacji sterowania do ogłoszenia pliku licencji i ciąg licencji:
static const TCHAR BASED_CODE _szLicFileName[] = _T("NVC_MFC_AxUI.lic");
static const WCHAR BASED_CODE _szLicString[] = L"Copyright (c) 2006 ";
[!UWAGA]
Jeśli modyfikujesz szLicString w jakikolwiek sposób, należy również zmodyfikować pierwszy wiersz w formancie.Plik LIC lub licencjonowania nie będzie działać prawidłowo.
Kreator formantu ActiveX umieszcza następujący kod w pliku implementacji sterowania do definiowania klasy kontroli VerifyUserLicense i GetLicenseKey funkcje:
// 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);
}
Wreszcie Kreatora formantów ActiveX modyfikuje projekt kontroli.Plik IDL.Licencji słowo kluczowe jest dodawany do deklaracji coclass formantu, jak w poniższym przykładzie:
[ uuid(913E450B-E720-4C71-BCDF-71C96EE98FEB), licensed,
helpstring("MyAxUI Control"), control ]
coclass NVC_MFC_AxUI
Dostosowywanie licencjonowania formantu ActiveX
Ponieważ VerifyUserLicense, GetLicenseKey, i VerifyLicenseKey są deklarowane jako funkcje składowe wirtualne klasy fabrycznej kontroli, można dostosować zachowanie licencjonowania formantu.
Na przykład, może dostarczyć kilka poziomów licencjonowania dla formantu przez zastąpienie VerifyUserLicense lub VerifyLicenseKey funkcji elementów członkowskich.Wewnątrz tej funkcji można dostosować, których właściwości lub metod są narażone na użytkownika zgodnie z poziomem licencji, który zostanie wykryty.
Można również dodać kod, aby VerifyLicenseKey funkcja, która zapewnia metodę dostosowaną dla informujący użytkownika, że kontrolować tworzenie nie powiodło się.Na przykład, w swojej VerifyLicenseKey funkcji składowej może zostać wyświetlony komunikat pudełko, stwierdzające, że nie można zainicjować formantu i dlaczego.
[!UWAGA]
Innym sposobem dostosowywania Weryfikacja licencji formantu ActiveX jest sprawdzenie bazy danych rejestracji dla określonego klucza rejestru, a nie telefonicznej AfxVerifyLicFile.Na przykład domyślna implementacja zobacz Modyfikacje plików wykonania w dalszej części tego artykułu.
Dodatkowe Omówienie licencjonowania, zobacz Licencjonowanie problemy w uaktualnienie istniejącego formantu ActiveX.