次の方法で共有


MFC ActiveX コントロール : ActiveX コントロールのライセンス

ユーザーがコントロールを使用するか、配布できるユーザーを制御するためのサポートを、 ActiveX コントロール ライセンスして、割り当てのオプション機能。(ライセンスの問題の補足説明については、 既存の ActiveX コントロールのアップグレードライセンスの問題を参照してください)。

ここでは、次のトピックについて説明します。

  • ActiveX コントロールのライセンス処理の概要

  • ライセンス コントロールの作成

  • サポートのライセンス

  • ActiveX コントロールのライセンス処理のカスタマイズ

他のユーザーが ActiveX コントロールをどのように使用するかを判断するには、コントロールの開発者として、割り当てのライセンスを実行する ActiveX コントロール。購入者がコントロールを配布するコントロールを使用するアプリケーションのない .LIC ファイルいます。協定を使用してコントロールや .LIC ファイルをコントロールの購入者に。これは、コントロールを使用する書き込みのアプリケーションから最初に、からコントロールをライセンスせずにそのアプリケーションのユーザーにします。

ActiveX コントロールのライセンス処理の概要

サポートを ActiveX コントロールにライセンス処理を提供するには、 COleObjectFactory のクラスは IClassFactory2 インターフェイスの複数の関数に実装を提供します: IClassFactory2::RequestLicKeyIClassFactory2::GetLicInfoIClassFactory2::CreateInstanceLic。コンテナー アプリケーションの開発者がコントロールのインスタンスを作成する要求を行うと、コントロール .LIC ファイルがあることを確認するに GetLicInfo への呼び出しが行われました。コントロールが稼働すると、コントロールのインスタンスは、コンテナーに作成し、配置できます。開発者がコンテナー アプリケーションを構築することを完了した後、別の関数呼び出し、 RequestLicKeyに今回は、行われます。このコンテナー アプリケーションに関数の戻り値ライセンス キー (単純な文字列)。Enter キーは、アプリケーション内に埋め込まれます。

下の図に、コンテナー アプリケーションの開発時に使用する ActiveX コントロールのライセンスの検証を示します。前に述べたように、コンテナー アプリケーションの開発者は、コントロールのインスタンスを作成できるように開発用コンピューターにインストールされる適切な .LIC ファイルが必要です。

開発時の ActiveX コントロールのライセンス検査

ライセンスされた ActiveX コントロール開発の検証

次の図では、次のプロセスは、エンド ユーザーがコンテナー アプリケーションを実行すると発生します。

アプリケーションの起動時には、作成される通常のコントロールに必要なインスタンス。コンテナーは、パラメーターとしての埋め込みライセンス キーを渡す CreateInstanceLicに呼び出しの作成により実現します。文字列比較は、ライセンス キーの埋め込みライセンス キーとコントロールの独自のコピー中に表示されます。一致に成功すると、コントロールのインスタンスが作成され、アプリケーションは正常に実行されます。.LIC ファイルをコントロールのユーザーのコンピューター上にある必要はないことに注意してください。

実行時の ActiveX コントロールのライセンス検査

ライセンスされた ActiveX コントロール実行の検証

コントロールのライセンスは 2 種類の基本的なコンポーネントから構成されます: コントロールの実装の特定の DLL コードとライセンスです。コードは二つ (2 または 3)関数呼び出しと以後参照される文字列で、著作権表記を含む 「ライセンス文字列」構成されます。これらの呼び出しとライセンスの文字列は、コントロールの実装 (.cpp)ファイルにあります。ActiveX コントロール ウィザードが生成するライセンス ファイルは著作権ステートメントのテキスト ファイルです。これは、 .LIC の拡張、たとえば SAMPLE.LIC のプロジェクト名を使用して指定されます。ライセンス コントロールは、ライセンス ファイルとともにデザイン時の使用が必要な場合されます。

ライセンス コントロールの作成

コントロールのフレームワークを作成するには、 ActiveX コントロール ウィザードを使用すると、サポートのライセンスを含むことができます。コントロールは、ランタイム ライセンスが必要であることを指定すると ActiveX コントロール ウィザードはコントロール クラスにライセンスをサポートするコードを追加します。コードは、関数からその使用ライセンスの検証のキーとライセンス ファイル構成されます。これらの関数は、コントロールのライセンスをカスタマイズするために変更できます。ライセンスのカスタマイズの詳細については、この技術情報の ActiveX コントロールのライセンス処理のカスタマイズ を参照してください。

コントロール プロジェクトを作成するときに ActiveX コントロール ウィザードでライセンス処理のサポートを追加するには

  • MFC ActiveX コントロールの作成でプロセスを使用します。ActiveX コントロール ウィザードの アプリケーションの構成 のページは、ランタイム ライセンスとコントロールを作成するオプションが含まれています。

ActiveX コントロール ウィザードでは、基本的なライセンス サポートを含む ActiveX コントロールのフレームワークを生成します。ライセンス コードの詳細については、次のトピックを参照してください。

サポートのライセンス

サポートを ActiveX コントロールにライセンス処理を追加するには、 ActiveX コントロール ウィザードを使用すると、 ActiveX コントロール ウィザードを宣言する実装は、コントロールのヘッダーと実装ファイルにライセンス機能追加されますコードを追加します。このコードは COleObjectFactory にある既定の実装をオーバーライドする VerifyUserLicense のメンバー関数と GetLicenseKey のメンバー関数で構成されます。これらの関数は、コントロールのライセンスを取得し、検証します。

[!メモ]

3 番目のメンバー関数は、 VerifyLicenseKey ActiveX コントロール ウィザードによって生成されていないか、ライセンス キーの検証の動作をカスタマイズするためにオーバーライドできます。

これらのメンバー関数は次のとおりです:

  • VerifyUserLicense

    コントロールのライセンス ファイルの有無システムのチェックして、コントロールの割り当てのデザイン時の使用を確認します。この関数は IClassFactory2::GetLicInfoIClassFactory::CreateInstanceLic処理の一部として、フレームワークによって呼び出されます。

  • GetLicenseKey 

    コントロールの DLL からの一意キーを要求します。コンテナー アプリケーションでこのキーが埋め込まれ、 VerifyLicenseKeyとともに、コントロールのインスタンスを作成するために後で使用されます。この関数は IClassFactory2::RequestLicKey処理の一部として、フレームワークによって呼び出されます。

  • VerifyLicenseKey 

    埋め込みキー、一意キーが同じであることを確認します。これは、コンテナーが使用するコントロールのインスタンスを作成できます。この関数は IClassFactory2::CreateInstanceLic 処理の一部として、フレームワークによって呼び出され、ライセンス キーのカスタマイズされた検証を提供するためにオーバーライドできます。既定の実装は、文字列比較を実行します。詳細については、この技術情報の ActiveX コントロールのライセンス処理のカスタマイズを、後の " " を参照してください。

9dwf178y.collapse_all(ja-jp,VS.110).gifヘッダー ファイルの変更

ActiveX コントロール ウィザードは、コントロールのヘッダー ファイルに次のコードを配置します。この例では、 entity_CODECSampleCtrl のオブジェクト factory の 2 種類のメンバー関数は、コントロール .LIC ファイルがあるかどうかを確認するとコントロールを含むアプリケーションで使用されるライセンス キーを取得すると宣言します: 1

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

9dwf178y.collapse_all(ja-jp,VS.110).gif実装ファイルの変更

ActiveX コントロール ウィザードは、コントロールの実装ファイルにライセンス ファイル名とライセンスの文字列を宣言する次の 2 種類のステートメントを配置します:

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

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

[!メモ]

何か szLicString を変更すると、コントロール .LIC ファイルの最初の行を変更できます。ライセンスは正しく機能しません。

ActiveX コントロール ウィザードは、コントロールの実装ファイルにコントロール クラスの VerifyUserLicense と GetLicenseKey 関数を定義する次のコードを配置します:

// 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);
}

最後に、 ActiveX Control Wizard は、コントロール プロジェクト .IDL ファイルを変更します。licensed のキーワードは、次の例のように、コントロールのコクラスの宣言に追加されます:

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

ActiveX コントロールのライセンス処理のカスタマイズ

VerifyUserLicenseGetLicenseKeyVerifyLicenseKey がコントロールのファクトリ クラスの仮想メンバー関数として宣言されているため、コントロールのライセンス動作をカスタマイズできます。

たとえば、コントロールに VerifyUserLicense または VerifyLicenseKey のメンバー関数をオーバーライドすることによって、ライセンス処理の複数のレベルを提供できます。この関数の中でプロパティまたはメソッドが、見つかったライセンスのレベルに応じてユーザーに公開する方法を調整できます。

ユーザーに通知するためにカスタマイズされたメソッドを使用する VerifyLicenseKey 関数にコードを追加できます。作成が失敗した制御できます。たとえば、 VerifyLicenseKey のメンバー関数でコントロールが初期化されていない理由ことを示すメッセージ ボックスを表示する場合があります。

[!メモ]

ActiveX コントロールのライセンスの検証をカスタマイズするもう一つの方法は AfxVerifyLicFileを呼び出す代わりに、特定のレジストリ キーの登録情報データベースをチェックすることです。既定の実装の例については、この技術情報の 実装ファイルの変更 " を参照してください。

ライセンスの問題の追加手順については、 既存の ActiveX コントロールのアップグレードライセンスの問題を参照してください。

参照

関連項目

MFC ActiveX コントロール ウィザード

概念

MFC ActiveX コントロール