MFC ActiveX 복제시 ocx GUID 변경방법

00_Develop_whOLE/ActiveX 2007. 9. 9. 22:48

같은 GUID를 쓰는 ocx가 두개이상 설치되어있을 경우엔, 

먼저 설치된 ocx파일만 실행되므로 변경해야함.

*웹 연결시 사용하는 GUID는 odl파일의 4번째 UUID임.(odl파일의 가장 마지막 UUID)*

작성환경 : ms vc++ 6.0 sp6

1. 시작>실행>guidgen.exe

2. 3.static const struct Guid == 를 선택, New Guid & Copy

3. 생성된 GUID를 4개로 복제.

  예) 생성된 GUID가 아래와 같을 경우

// {77293D66-B77E-4973-83C1-325286629E23}
static const GUID <<name>> =
{ 0x77293d66, 0xb77e, 0x4973, { 0x83, 0xc1, 0x32, 0x52, 0x86, 0x62, 0x9e, 0x23 } };

**가운데 static const...는 필요없으므로 삭제해도 무방**

원본.

// {77293D66-B77E-4973-83C1-325286629E23}
{ 0x77293d66, 0xb77e, 0x4973, { 0x83, 0xc1, 0x32, 0x52, 0x86, 0x62, 0x9e, 0x23 } };

복제1.
// {77293D67-B77E-4973-83C1-325286629E23}
{ 0x77293d67, 0xb77e, 0x4973, { 0x83, 0xc1, 0x32, 0x52, 0x86, 0x62, 0x9e, 0x23 } };

복제2.

// {77293D68-B77E-4973-83C1-325286629E23}
{ 0x77293d68, 0xb77e, 0x4973, { 0x83, 0xc1, 0x32, 0x52, 0x86, 0x62, 0x9e, 0x23 } };

복제3.

// {77293D69-B77E-4973-83C1-325286629E23}
{ 0x77293d69, 0xb77e, 0x4973, { 0x83, 0xc1, 0x32, 0x52, 0x86, 0x62, 0x9e, 0x23 } };

이런 식으로 첫 단락의 끝자리만 변경.
숫자가 아니라 알파벳일 경우 A,B,C의 순서대로 나간다.

4. 복제된 UID를 odl파일에 있는 4개의 uuid에 순서대로 붙여넣기

5. cpp파일의 GUID수정

   const GUID CDECL BASED_CODE _ctlid =

     의 밑에 존재하는 GUID를 '복제3'의 GUID로 변경

   const GUID CDECL BASED_CODE _tlid =

     의 밑에 존재하는 GUID를 '원본'의 GUID로 변경

  ** CATID를 변경하지 않음**

6. Ctl.cpp파일의 GUID 수정

   '복제3'의 GUID를 IMPLEMENT_OLECREATE형식으로 변경한 후

     (변경 예 { 0x77293d69, 0xb77e, 0x4973, { 0x83, 0xc1, 0x32, 0x52, 0x86, 0x62, 0x9e, 0x23 } };

                          ↓↓↓↓                          ↓↓↓↓                          ↓↓↓↓

                    0x77293d69, 0xb77e, 0x4973, 0x83, 0xc1, 0x32, 0x52, 0x86, 0x62, 0x9e, 0x23

      중괄호만 지워주면 됨 )

   Ctl.cpp의 IMPLEMENT_OLECREATE_EX(   안에 존재하는 GUID를

     수정한 '복제3'의 GUID로 변경

   const IID BASED_CODE 의 GUID를 '복제1'의 GUID로 변경

   const IID BASED_CODE *Events 의 GUID를 '복제2'의 GUID로 변경


***GUID중 cpp의 CATID와 Ppg.cpp의 GUID는 변경하지 않음***

사용자 삽입 이미지

설정

트랙백

댓글