ActiveX 컨트롤을 MFC 컨트롤을 ActiveX: 라이센스

라이센스 지원, 선택적인 기능 ActiveX 컨트롤을 사용 하면 컨트롤을 사용 하거나 컨트롤을 배포할 수 있습니다.(라이센스 문제에서의 라이센스 관련 문제에 대 한 추가 토론을 참조 하십시오. 업그레이드 기존 컨트롤 ActiveX.)

이 문서에서는 다음 항목을 설명합니다.

  • ActiveX 라이센스 컨트롤 개요

  • 라이센스가 있는 컨트롤 만들기

  • 라이센스 지원

  • 있는 ActiveX 컨트롤의 라이센스 사용자 지정

라이센스를 구현 하는 ActiveX 컨트롤, 컨트롤 개발자는 다른 사람이 ActiveX 제어 방법을 확인할 수 있습니다.컨트롤과 컨트롤 구매자를 제공 하 고 있습니다.LIC 파일을 구매자의 컨트롤을 배포할 수 있습니다 아니라 계약을 합니다.LIC 파일 컨트롤을 사용 하는 응용 프로그램을.이렇게 하면 사용자를의 응용 프로그램이 해당 컨트롤을 첫 번째 컨트롤의 라이센스를 사용 하 여 새 응용 프로그램을 작성할 수 없습니다.

ActiveX 라이센스 컨트롤 개요

ActiveX 컨트롤에 대 한 라이센스 지원을 제공 하는 COleObjectFactory 클래스는 여러 함수에 대 한 구현을 제공의 에서는 IClassFactory2 인터페이스: IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfo, 및 IClassFactory2::CreateInstanceLic.때 컨테이너 응용 프로그램 개발자를 호출 하는 컨트롤의 인스턴스를 만들도록 요청을 만듭니다 GetLicInfo 확인 하려고 컨트롤입니다.LIC 파일을 제공할 수 있습니다.라이센스 된 컨트롤의 경우 컨트롤의 인스턴스가 만들어 컨테이너에 배치 합니다.컨테이너 응용 프로그램을 만드는 개발자가 완료 된 후 다른 함수를 호출할 경우이 시간에 RequestLicKey에서 이루어집니다.컨테이너 응용 프로그램에 라이센스 키 (단순 문자 문자열)이이 함수를 반환합니다.반환 된 값은 다음 응용 프로그램에 포함 됩니다.

아래 그림에서는 컨테이너 응용 프로그램을 개발 하는 동안 사용 되는 ActiveX 컨트롤의 라이센스 확인 방법을 보여 줍니다.앞서 언급 했 듯이 컨테이너 응용 프로그램 개발자는 적절 한이 있어야 합니다.LIC 파일 컨트롤의 인스턴스를 만들려면 개발 컴퓨터에 설치 합니다.

개발 도중 사용이 허가된 ActiveX 컨트롤 확인

허가된 ActiveX 컨트롤 개발 확인

최종 사용자의 컨테이너 응용 프로그램을 실행 하면 다음 그림과 같이 다음 프로세스에서 발생 합니다.

응용 프로그램이 시작 되 면 컨트롤의 인스턴스가 일반적으로 만들어야 합니다.컨테이너는이 기능을 호출 하 여 수행 CreateInstanceLic, 포함 된 라이센스 키를 매개 변수로 전달 합니다.문자열 비교는 다음 포함 된 라이센스 키와 라이센스 키 컨트롤의 복사본 간에 이루어집니다.일치에 성공 하면 컨트롤의 인스턴스가 만들어지고 응용 프로그램을 계속 해 서 정상적으로 실행.이때의.LIC 파일 컨트롤 사용자의 컴퓨터에 표시할 필요가 없는 경우입니다.

실행 도중 사용이 허가된 ActiveX 컨트롤 확인

허가된 ActiveX 컨트롤 실행 확인

컨트롤 라이센스 두 가지 기본 구성 요소로 구성 됩니다: 컨트롤 구현 DLL에에서 특정 코드와 라이센스 파일입니다.코드 함수 호출 두 가지 (또는 세 가지 가능한 경우) 및 라 "저작권 표시를 포함 하는 라이센스 문자열" 라고 하는 문자열로 구성 됩니다.이러한 함수 호출과 라이센스 문자열은 컨트롤 구현에서 발견 (.CPP) 파일입니다.ActiveX 컨트롤 마법사에 의해 생성 된 라이센스 파일은 저작권 설명이 포함 된 텍스트 파일이입니다.프로젝트 이름으로 사용 하 라는 것은.예를 들어 샘플 LIC 확장자LIC입니다.디자인 타임의 사용이 필요한 경우 라이센스가 있는 컨트롤 라이센스 파일에 포함 되어 있어야 합니다.

라이센스가 있는 컨트롤 만들기

ActiveX 컨트롤 마법사를 사용 하 여 컨트롤 프레임 워크를 만들 때는 라이센스 지원을 포함 하는 것이 더 쉽습니다.컨트롤의 런타임 라이센스가 있어야 한다는 지정할 때 ActiveX 컨트롤 마법사 라이센스 지원을 위해서는 컨트롤 클래스에 코드를 추가 합니다.라이센스 확인에 대 한 키 및 라이센스 파일을 사용 하는 함수 코드가 구성 됩니다.또한 이러한 함수 컨트롤 라이센스에 맞게 수정할 수 있습니다.라이센스 사용자 지정에 대 한 자세한 내용은 라이센스 ActiveX 컨트롤의 사용자 지정 을이 참고 하십시오.

컨트롤 프로젝트를 만들 때 ActiveX 컨트롤 마법사 사용 라이센스에 대 한 지원을 추가 하려면

  • 지침에 따라 는 MFC ActiveX 컨트롤 만들기.응용 프로그램 설정 ActiveX 컨트롤 마법사 페이지 런타임 라이센스를 컨트롤을 만들 수 있습니다.

ActiveX 컨트롤 마법사는 이제 기본 라이센스 지원 ActiveX 제어 프레임 워크를 생성 합니다.라이센스 코드에 대 한 자세한 내용은 다음 항목을 참조 하십시오.

라이센스 지원

ActiveX 컨트롤 마법사를 사용 하는 ActiveX 컨트롤에 라이센스 지원 기능을 추가 하는 경우 ActiveX 컨트롤 마법사를 선언 하 고 기능을 구현 하는 코드는 컨트롤의 헤더 파일과 구현 파일 추가 됩니다.구성 된이 코드는 VerifyUserLicense 멤버 함수 a GetLicenseKey 에서 찾을 수 있는 기본 구현을 재정의 하는 멤버 함수 COleObjectFactory .이러한 함수는 검색 하 고 컨트롤 라이센스를 확인 합니다.

[!참고]

셋째 멤버 함수, VerifyLicenseKey ActiveX 컨트롤 마법사에 의해 생성 되지는 않지만 재정의 라이센스 키 확인 동작을 사용자 지정할 수 있습니다.

이러한 멤버 함수는 다음과 같습니다.

  • VerifyUserLicense

    컨트롤 컨트롤 라이센스 파일이 있는지 시스템을 검사 하 여 디자인 타임에 사용할 수를 확인 합니다.프레임 워크에서 처리의 일부로 호출 되는이 함수 IClassFactory2::GetLicInfoIClassFactory::CreateInstanceLic.

  • GetLicenseKey 

    컨트롤 DLL에서 고유 키를 요청합니다.이 키 컨테이너 응용 프로그램에 포함 되며 나중에 함께 사용 되는 VerifyLicenseKey, 컨트롤의 인스턴스를 만들 수 있습니다.프레임 워크에서 처리의 일부로 호출 되는이 함수 IClassFactory2::RequestLicKey.

  • VerifyLicenseKey 

    포함 된 키 및 고유 키 컨트롤의 동일한 지 확인 합니다.이 컨테이너를 사용 하기 위해 컨트롤의 인스턴스를 만들 수 있습니다.프레임 워크에서 처리의 일부로 호출 되는이 함수 IClassFactory2::CreateInstanceLic 및 사용자 지정 된 라이센스 키 확인을 제공 하도록 재정의할 수 있습니다.기본 구현은 문자열 비교를 수행합니다.자세한 내용은 라이센스 ActiveX 컨트롤의 사용자 지정,이 문서 뒷부분의.

9dwf178y.collapse_all(ko-kr,VS.110).gif헤더 파일 수정

ActiveX 컨트롤 마법사 컨트롤 헤더 파일에 다음 코드를 넣습니다.이 예제에서는 두 개의 멤버 함수를 CSampleCtrl개체의 factory 선언, 하나는 컨트롤의 존재 여부를 확인 합니다.LIC 파일 및 다른 컨트롤을 포함 하는 응용 프로그램에 사용 되는 라이센스 키를 검색 합니다.

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

9dwf178y.collapse_all(ko-kr,VS.110).gif구현 파일 수정

ActiveX 컨트롤 마법사 다음 두 명령문의 라이센스 파일 이름 및 라이센스 문자열을 선언 하는 컨트롤 구현 파일에 넣습니다.

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 컨트롤 마법사 컨트롤 프로젝트를 수정 합니다.IDL 파일입니다.허가 에 다음 예제와 같이 컨트롤의 coclass 선언은 키워드 추가:

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

있는 ActiveX 컨트롤의 라이센스 사용자 지정

때문에 VerifyUserLicense, GetLicenseKey, 및 VerifyLicenseKey 선언 된 컨트롤 팩터리 클래스의 가상 멤버 함수로 컨트롤의 라이센스 동작을 지정할 수 있습니다.

예를 들어, 여러 단계를 재정의 하 여 컨트롤에 대 한 라이센스를 제공할 수 있는 VerifyUserLicense 또는 VerifyLicenseKey 멤버 함수.이 함수 안에서 사용할 속성이 나 메서드를 검색 된 라이센스 수준에 따라 사용자에 게 노출 조정할 수 있습니다.

코드에 추가할 수도 있습니다 해당 VerifyLicenseKey 만들기를 제어 하는 사용자에 게 알리는 실패에 대 한 사용자 지정된 하는 방법을 제공 하는 함수입니다.예를 들어를 VerifyLicenseKey 메시지를 표시할 수 있는 멤버 함수 상자 컨트롤 초기화에 실패 한다는 이유.

[!참고]

등록 데이터베이스를 호출 하는 대신 특정 레지스트리 키를 확인 하는 것이 사용자 ActiveX 컨트롤 라이센스를 확인 하는 또 다른 방법은 AfxVerifyLicFile.기본 구현의 예제를 참조 하십시오은 구현 파일 수정 이 문서의 시작 부분입니다.

라이센스 문제에 대 한 추가 토론의 라이센스 문제를 참조 하십시오. 업그레이드 기존 컨트롤 ActiveX.

참고 항목

참조

MFC ActiveX 컨트롤 마법사

개념

MFC 컨트롤을 ActiveX