Controlli ActiveX MFC: licenze di un controllo ActiveX
Consentendo in licenza il supporto, una funzionalità facoltative controlli ActiveX, consente di controllo che può contenere o distribuire il controllo. (Per informazioni aggiuntive della licenza dei problemi, vedere licenze relative ai problemi in Aggiornamento di un controllo ActiveX esistente).
Questo articolo vengono illustrati i seguenti argomenti:
Cenni preliminari sulla gestione licenze dei controlli ActiveX
Creare un controllo concesso in licenza
Gestione delle licenze supporto
Personalizzare la gestione delle licenze di un controllo ActiveX
I controlli ActiveX che implementano le licenze consentono che, durante lo sviluppo del controllo, determinare come altri utenti utilizzerà il controllo ActiveX. Fornite all'acquirente del controllo con il controllo e il file di .LIC, con il contratto che il sistema può distribuire il controllo, ma non il file di .LIC, con un'applicazione che utilizza il controllo. In questo modo si impedisce agli utenti dell'applicazione dalle nuove creazione di applicazioni che utilizzano il controllo, senza prima le licenze il controllo che si.
Cenni preliminari sulla gestione licenze dei controlli ActiveX
Per fornire la gestione licenze il supporto per i controlli ActiveX, la classe di COleObjectFactory fornisce un'implementazione per diverse funzioni dell'interfaccia di IClassFactory2 : IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfo e IClassFactory2::CreateInstanceLic. Quando lo sviluppatore di un'applicazione contenitore effettua una richiesta di creare un'istanza del controllo, una chiamata a GetLicInfo viene eseguita per verificare che il file del controllo .LIC sia presente. Se il controllo è concesso in licenza, un'istanza del controllo può essere creata e inserita nel contenitore. Dopo che lo sviluppatore ha completato creare l'applicazione contenitore, un'altra chiamata di funzione, questa volta a RequestLicKey, viene terminato. Questa funzione restituisce un codice di licenza (una stringa di caratteri semplice) all'applicazione contenitore. La chiave restituita verrà quindi incorporata nell'applicazione.
Nella figura seguente viene illustrata la verifica della licenza di un controllo ActiveX che verrà utilizzato durante lo sviluppo di un'applicazione contenitore. Come accennato in precedenza, lo sviluppatore di un'applicazione contenitore deve avere il file appropriato di .LIC installato nel computer di sviluppo per creare un'istanza del controllo.
Verifica di un controllo ActiveX con licenza durante lo sviluppo
Il processo successivo, illustrata di seguito, si verifica quando l'utente finale esegue l'applicazione contenitore.
Quando l'applicazione viene avviata, un'istanza del controllo delle necessità in genere di essere creato. Il contenitore ottenere questo risultato tramite una chiamata a CreateInstanceLic, passando il codice di licenza incorporato come parametro. Un confronto di stringhe viene quindi eseguito tra il codice di licenza incorporato e copia del controllo la propria il codice di licenza. Se la corrispondenza ha esito positivo, viene creata un'istanza del controllo e l'applicazione continua a essere eseguito normalmente. Si noti che il file di .LIC non deve essere presente nel computer dell'utente del controllo.
Verifica di un controllo ActiveX con licenza durante l'esecuzione
La gestione licenze dei controlli è costituito da due componenti di base: codice specifico nella DLL di implementazione del controllo e il file di licenza. Il codice è composto da due o eventualmente tre) chiamate di funzione e una stringa di caratteri, in futuro detta "stringa" di licenza, contenente le informazioni sul copyright. Queste chiamate e la stringa di licenza disponibili nel file di implementazione del controllo (.CPP). Il file di licenza, generato dalla Creazione guidata controllo ActiveX, è un file di testo con una dichiarazione di copyright. Viene denominato utilizzando il nome del progetto con estensione .LIC, ad esempio SAMPLE.LIC. Un controllo concesso in licenza deve essere seguito dal file di licenza se all'utilizzo in fase di progettazione è necessario.
Creare un controllo concesso in licenza
Quando si utilizza la Creazione guidata controllo ActiveX per creare il framework del controllo, è facile includere la gestione licenze il supporto. Quando si specifica che il controllo deve disporre di una licenza runtime, la Creazione guidata controllo ActiveX aggiungere il codice alla classe del controllo per supportare la gestione delle licenze. Il codice costituita da funzioni che utilizzano una chiave e un file di licenza per la verifica della licenza. Queste funzioni possono essere modificate per personalizzare la gestione licenze dei controlli. Per ulteriori informazioni sulla personalizzazione della licenza, vedere più avanti Personalizzare la gestione delle licenze di un controllo ActiveX in questo articolo.
Per aggiungere supporto per la gestione licenze con la Creazione guidata controllo ActiveX durante la creazione del progetto di controllo
- Utilizzare le istruzioni in Creare un controllo ActiveX MFC. La pagina di Impostazioni applicazione di Creazione guidata controllo ActiveX contenente la possibilità di creare il controllo alla licenza runtime.
La Creazione guidata controllo ActiveX ora genera un framework del controllo ActiveX che include il supporto di base della licenza. Per una spiegazione dettagliata del codice di gestione delle licenze, vedere l'argomento seguente.
Gestione delle licenze supporto
Quando si utilizza la Creazione guidata controllo ActiveX per aggiungere licenze il supporto a un controllo ActiveX, la Creazione guidata controllo ActiveX aggiungere il codice che dichiara il caso della funzionalità della licenza viene aggiunto all'intestazione e ai file di implementazione del controllo. Questo codice è costituita da una funzione membro di VerifyUserLicense e una funzione membro di GetLicenseKey, che esegue l'override delle implementazioni predefinite presenti in COleObjectFactory. Queste funzioni vengono recuperate e verificare la licenza del controllo.
Nota
Una terza funzione membro, VerifyLicenseKey non viene generata dalla Creazione guidata controllo ActiveX, ma è possibile eseguirne l'override per personalizzare il comportamento di verifica del codice di licenza.
Queste funzioni membro sono:
-
Verifica che il controllo consente l'utilizzo in fase di progettazione controllando il sistema per la presenza del file di licenza del controllo. Questa funzione viene chiamata dal framework come parte dell'elaborazione IClassFactory2::GetLicInfo e IClassFactory::CreateInstanceLic.
-
Richiede una chiave univoca dalla DLL del controllo. Questa chiave viene incorporata nell'applicazione contenitore e viene utilizzato in un secondo momento, insieme a VerifyLicenseKey, per creare un'istanza del controllo. Questa funzione viene chiamata dal framework come parte dell'elaborazione IClassFactory2::RequestLicKey.
-
Verifica che la chiave incorporata e la chiave univoca del controllo siano identica. In questo modo il contenitore creare un'istanza del controllo per il relativo utilizzo. Questa funzione viene chiamata dal framework come parte dell'elaborazione IClassFactory2::CreateInstanceLic e può essere sottoposta a override per fornire la gestione personalizzata del codice di licenza. L'implementazione predefinita esegue un confronto di stringhe. Per ulteriori informazioni, vedere Personalizzare la gestione delle licenze di un controllo ActiveX, più avanti in questo articolo.
Modifiche ai file di intestazione
La Creazione guidata controllo ActiveX inserisce il codice seguente nel file di intestazione del controllo. In questo esempio, due funzioni membro dell'oggetto factory di CSampleCtrl vengono dichiarate, uno che verifica la presenza del file del controllo .LIC e un altro che recuperare il codice di licenza da utilizzare nell'applicazione contenente il controllo:
BEGIN_OLEFACTORY(CMyAxUICtrl) // Class factory and guid
virtual BOOL VerifyUserLicense();
virtual BOOL GetLicenseKey(DWORD, BSTR FAR*);
END_OLEFACTORY(CMyAxUICtrl)
Modifiche al file di implementazione
La Creazione guidata controllo ActiveX posiziona le due istruzioni nel file di implementazione del controllo per dichiarare il nome del file di licenza e per concedere una licenza alla stringa:
static const TCHAR BASED_CODE _szLicFileName[] = _T("NVC_MFC_AxUI.lic");
static const WCHAR BASED_CODE _szLicString[] = L"Copyright (c) 2006 ";
Nota
Se si modifica szLicString in alcun modo, è inoltre necessario modificare la prima riga nel file del controllo .LIC o le licenze non funzionerà correttamente.
La Creazione guidata controllo ActiveX inserisce il codice seguente nel file di implementazione del controllo per definire le funzioni di VerifyUserLicense e di GetLicenseKey delle classi di controlli:
// 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);
}
Infine, ActiveX Control Wizard modifica il file di progetto di controllo .IDL. La parola chiave di licensed viene aggiunto alla dichiarazione della coclasse del controllo, come illustrato nell'esempio seguente:
[ uuid(913E450B-E720-4C71-BCDF-71C96EE98FEB), licensed,
helpstring("MyAxUI Control"), control ]
coclass NVC_MFC_AxUI
Personalizzare la gestione delle licenze di un controllo ActiveX
Poiché VerifyUserLicense, GetLicenseKey e VerifyLicenseKey vengono dichiarati come virtuale funzioni membro della factory di controllo classe, è possibile personalizzare il comportamento di gestione delle licenze del controllo.
Ad esempio, è possibile fornire diversi livelli di licenza per il controllo mediante l'override delle funzioni membro di VerifyLicenseKey o di VerifyUserLicense. In questa funzione è possibile regolare le proprietà o i metodi esposti all'utente in base al livello della licenza è stato rilevato.
È inoltre possibile aggiungere codice alla funzione di VerifyLicenseKey che fornisce un metodo personalizzato per le informazioni dell'utente che controlla la creazione non riuscita. Ad esempio, nella funzione membro di VerifyLicenseKey possibile visualizzare una finestra di messaggio che informa che il controllo non è riuscito a inizializzare e i motivi.
Nota
Un altro modo per personalizzare la gestione delle licenze di controllo ActiveX è di controllare il database di registrazione per una chiave specifica del Registro di sistema, anziché chiamare AfxVerifyLicFile.Per un esempio di implementazione predefinita, vedere la sezione di Modifiche al file di implementazione di questo articolo.
Per informazioni aggiuntive della licenza dei problemi, vedere licenze relative ai problemi in Aggiornamento di un controllo ActiveX esistente.
Vedere anche
Riferimenti
Creazione guidata controllo ActiveX MFC