MFC-ActiveX-Steuerelemente: Lizenzieren eines ActiveX-Steuerelements
Unterstützung lizenzierend, kann eine optionale Funktion von ActiveX-Steuerelementen Sie an den das Steuerelement ist, das Steuerelement zu verwenden oder verteilen.(Weitere Informationen dazu finden Sie Lizenzierungs Probleme im Zusammenhang mit Lizenzierungs-Probleme in Aktualisieren eines vorhandenen ActiveX-Steuerelement).
In diesem Artikel werden die folgenden Themen:
Übersicht über das ActiveX-Steuerelement-Lizenzierens
Ein lizenziertes Steuerelement erstellen
Unterstützung lizenzieren
Die Lizenzierung Anpassen eines ActiveX-Steuerelements
ActiveX-Steuerelemente, die Lizenzierung implementiert werden, ermöglichen es Ihnen, als Entwickler von Steuerelementen, um zu bestimmen, wie andere Personen das ActiveX-Steuerelement verwenden.Sie stellen den Steuerelements käufer mit dem Steuerelement und LIC-Datei, mit dem Vertrag, dass der Käufer das Steuerelement neu verteilt, aber nicht der LIC-Datei mit einer Anwendung, die das Steuerelement verwendet.Dadurch wird verhindert, dass Benutzer dieser Anwendung beim Schreiben von Anwendungen, die das Steuerelement verwenden, ohne zuerst Lizenzierung des Steuerelements von Ihnen oder legt diese fest.
Übersicht über das ActiveX-Steuerelement-Lizenzierens
Um Lizenzierungs Unterstützung für ActiveX-Steuerelemente zu unterstützen, stellt die COleObjectFactory-Klasse eine Implementierung für mehrere Funktionen in der IClassFactory2-Schnittstelle bereit: IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfo und IClassFactory2::CreateInstanceLic.Wenn der Containeranwendungs Anwendungsentwickler eine Anforderung stellt, eine Instanz des Steuerelements erstellt, wird ein Aufruf GetLicInfo ausgeführt, um sicherzustellen, dass das Steuerelement lic-datei vorhanden ist.Wenn das Steuerelement lizenziert ist, kann eine Instanz des Steuerelements im Container erstellt und gespeichert werden.Nach Abschluss der Entwickler die Containeranwendung erstellen, wird ein weiterer Funktionsaufruf, dieses Mal auf RequestLicKey ausgeführt.Diese Funktion gibt einen Lizenzschlüssel (eine einfache Zeichenfolge) an die Containeranwendung zurück.Die zurückgegebene Schlüssel wird dann in der Anwendung eingebettet.
Die folgende Abbildung zeigt die Lizenz der Überprüfung eines ActiveX-Steuerelements, das bei der Entwicklung einer Containeranwendung verwendet wird.Wie bereits erwähnt, muss der Anwendungsentwickler Containeranwendungs die richtige LIC-Datei auf dem Entwicklungscomputer installiert wird, um eine Instanz des Steuerelements erstellt.
Überprüfung eines lizenzierten ActiveX-Steuerelements während der Entwicklung
Der folgende Prozess, das in der folgenden Abbildung gezeigt, tritt ein, wenn der Endbenutzer die Containeranwendung ausführt.
Wenn die Anwendung gestartet wird, muss eine Instanz des Steuerelements normalerweise erstellt werden.Der Container erreicht dies, indem sie einen Aufruf von CreateInstanceLic macht und den eingebetteten Lizenzschlüssel als Parameter übergeben wird.Ein Zeichenfolgenvergleich wird dann der eigenen Kopie zwischen dem eingebetteten Lizenzschlüssel und des Steuerelements des Lizenzschlüssels verglichen.Wenn die Übereinstimmung erfolgreich ist, wird eine Instanz des Steuerelements erstellt, und die Anwendung wird in der Regel ausgeführt wird.Beachten Sie, dass die LIC-Datei muss nicht auf dem Computer des Steuerelements benutzers vorhanden sein.
Überprüfung eines lizenzierten ActiveX-Steuerelements während der Ausführung
Steuerelements lizenzierung besteht aus zwei grundlegenden Komponenten: spezieller Code in der Steuerelementimplementierung DLL und der Lizenzdatei.Der Code wird in zwei oder drei möglicherweise Funktionsaufrufe) und aus einer Zeichenfolge, eine so genannte anschließend die Zeichenfolge" und "Lizenz einen Copyrightvermerk enthält.Diese Aufrufe und die Lizenz Zeichenfolge sind in der Datei der Steuerelementimplementierung (.CPP) gefunden.Die Lizenzdatei, generiert aus dem ActiveX-Steuerelement-Assistenten, ist eine Textdatei mit einer Urheberrechtserklärung.Sie wird mithilfe des Projektnamens mit einer .LIC-Erweiterung, z. B. SAMPLE.LIC benannt.Ein lizenziertes Steuerelement muss von der Lizenzdatei begleitet werden, wenn die Entwurfszeit benötigt wird.
Ein lizenziertes Steuerelement erstellen
Wenn Sie mit dem ActiveX-Steuerelement-Assistenten Steuerelements verwenden, um die Seiten zu erstellen, ist es einfach, Lizenzierungs die Warteschlangenunterstützung einzuschließen.Wenn Sie angeben, dass das Steuerelement eine Ablaufzeit lizenz haben muss, fügt der Code ActiveX-Steuerelement-Assistent lizenzierung Unterstützung der Steuerelementklasse hinzu.Der Code umfasst Funktionen, die einen Schlüssel und einer Lizenzdatei für die Überprüfung der Lizenz verwendet werden.Diese Funktionen können außerdem geändert werden, damit das Steuerelement lizenzierung anzupassen.Weitere Informationen zur Anpassung der Lizenz Die Lizenzierung Anpassen eines ActiveX-Steuerelements finden Sie später in diesem Artikel.
Um Unterstützung für das Lizenzieren mit dem ActiveX-Steuerelement-Assistenten hinzufügen, wenn Sie das Steuerelementprojekt erstellen
- Verwenden Sie die Anweisungen unter Ein MFC-ActiveX-Steuerelement erstellen.Die Anwendungseinstellungen neben dem ActiveX-Steuerelement-Assistenten enthält die Option, um das Steuerelement mit der Common Language lizenz zu erstellen.
Der ActiveX-Steuerelement-Assistent generiert jetzt ein ActiveX-Steuerelement-Framework Lizenzierungs, das grundlegende Unterstützung umfasst.Eine ausführliche Erklärung des Lizenzierungs Codes finden Sie im nächsten Thema.
Unterstützung lizenzieren
Wenn Sie den Lizenzierungs ActiveX-Steuerelement-Assistenten verwenden, um die Unterstützung von einem ActiveX-Steuerelement hinzufügen, fügt der ActiveX-Steuerelement-Assistent Code hinzu, mit dem das Feature für die Lizenzierungs den Header des Steuerelements hinzugefügt wird und die Implementierungsdateien deklariert und implementiert.Dieser Code wird in einer Memberfunktion VerifyUserLicense und aus einer GetLicenseKey-Memberfunktion, die die Standardimplementierungen überschreiben, die in COleObjectFactory gefunden werden.Diese Funktionen überprüfen und Abrufen lizenz das Steuerelement.
Hinweis |
---|
Eine dritte Memberfunktion, VerifyLicenseKey wird nicht aus dem ActiveX-Steuerelement-Assistenten generiert, sondern kann überschrieben werden, um das Verhalten überprüfungs Lizenzschlüssel anzupassen. |
Diese Memberfunktionen sind:
-
Überprüft, ob das Steuerelement durch, um zur Entwurfszeit das Überprüfen des Systems das Vorhandensein des Steuerelements lizenzdatei zulässt.Diese Funktion wird vom Framework als Teil der Verarbeitung von IClassFactory2::GetLicInfo und IClassFactory::CreateInstanceLic aufgerufen.
-
Fordert einen eindeutigen Schlüssel vom Steuerelement DLL.Dieser Schlüssel wird in der Containeranwendung eingebettet und später wird in Verbindung mit VerifyLicenseKey, um eine Instanz des Steuerelements erstellt.Diese Funktion wird vom Framework als Teil der Verarbeitung von IClassFactory2::RequestLicKey aufgerufen.
-
Überprüft, ob die eingebettete Schlüssel und den eindeutigen Schlüssel des Steuerelements identisch sind.Dies ermöglicht es dem Container, um eine Instanz des Steuerelements für die Verwendung zu erstellen.Diese Funktion wird vom Framework als Teil der Verarbeitung von IClassFactory2::CreateInstanceLic bezeichnet und kann überschrieben werden, um benutzerdefinierte Überprüfung des Lizenzschlüssels bereitzustellen.Die Standardimplementierung führt einen Zeichenfolgenvergleich aus.Weitere Informationen finden Sie unter Die Lizenzierung Anpassen eines ActiveX-Steuerelements, der später in diesem Artikel.
Headerdatei-Änderungen
Der ActiveX-Steuerelement-Assistent platziert den folgenden Code in der headerdatei.In diesem Beispiel werden zwei Memberfunktionen des factory-Objekts von CSampleCtrl deklariert, die eine überprüft das Vorhandensein der Steuerelement-LIC-Datei, und die andere ruft den Lizenzschlüssel ab, der in der Anwendung verwendet werden soll, die das Steuerelement enthält:
BEGIN_OLEFACTORY(CMyAxUICtrl) // Class factory and guid
virtual BOOL VerifyUserLicense();
virtual BOOL GetLicenseKey(DWORD, BSTR FAR*);
END_OLEFACTORY(CMyAxUICtrl)
Implementierungsdatei-Änderungen
Der ActiveX-Steuerelement-Assistent platziert die folgenden beiden Anweisungen in der implementierungsdatei Lizenz, um den Dateinamen und die Lizenz zu deklarieren: Zeichenfolge
static const TCHAR BASED_CODE _szLicFileName[] = _T("NVC_MFC_AxUI.lic");
static const WCHAR BASED_CODE _szLicString[] = L"Copyright (c) 2006 ";
Hinweis |
---|
Wenn Sie szLicString auf irgendeine Weise ändern, müssen Sie die erste Zeile in der lic-datei Steuerelements auch ändern oder Lizenzierung funktioniert nicht ordnungsgemäß. |
Der ActiveX-Steuerelement-Assistent platziert den folgenden Code in der implementierungsdatei, um die VerifyUserLicense und GetLicenseKey-Funktionen der Steuerelementklassen zu definieren:
// 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);
}
Schließlich ändert ActiveX Control Wizard das Steuerelementprojekt idl-datei.Das licensed-Schlüsselwort wird in die Deklaration der Co-Klassen des Steuerelements hinzugefügt, wie im folgenden Beispiel gezeigt:
[ uuid(913E450B-E720-4C71-BCDF-71C96EE98FEB), licensed,
helpstring("MyAxUI Control"), control ]
coclass NVC_MFC_AxUI
Die Lizenzierung Anpassen eines ActiveX-Steuerelements
Da VerifyUserLicense, GetLicenseKey und VerifyLicenseKey als virtuelle Memberfunktionen der Control Factory-Klasse deklariert sind, können Sie das Lizenzierungs Verhalten des Steuerelements anpassen.
Beispielsweise können Sie verschiedene Ebenen der Lizenzierung für das Steuerelement aus dem Überschreiben der VerifyUserLicense oder VerifyLicenseKey-Memberfunktionen bereitstellen.Innerhalb dieser Funktion können Sie anpassen, welche Eigenschaften oder Methoden an den Benutzer entsprechend der Lizenz Ebene verfügbar gemacht werden, die erkannten.
Sie können Code der VerifyLicenseKey-Funktion hinzufügen, die eine benutzerdefinierte Methode zum Informieren eines Benutzers bereitstellt, das Build ist ein Fehler aufgetreten.Zum Beispiel in der VerifyLicenseKey-Memberfunktion könnten Sie ein Meldungsfeld an, das den das Steuerelement angibt, um zu initialisieren und warum ein Fehler aufgetreten ist.
Hinweis |
---|
Eine andere Möglichkeit, ActiveX-Steuerelement-Lizenz Anpassen der Überprüfung der Registrierungsdatenbank für einen bestimmten Registrierungsschlüssel zu überprüfen, anstatt AfxVerifyLicFile aufzurufen.Ein Beispiel für die Standardimplementierung finden Sie im Abschnitt Implementierungsdatei-Änderungen dieses Artikels. |
Weitere Informationen dazu finden Sie Lizenzierungs Probleme im Zusammenhang mit Lizenzierungs-Probleme in Aktualisieren eines vorhandenen ActiveX-Steuerelement.