검색결과 리스트
guid에 해당되는 글 2건
- 2007.09.09 ActiveX 코딩시 clsid로 인한 ocx 재설치 오류
- 2007.09.09 MFC ActiveX 복제시 ocx GUID 변경방법 1
글
ActiveX 코딩시 clsid로 인한 ocx 재설치 오류
ActiveX사용을 종료한후,
OLE View(시작>프로그램>MS Visual Studio>Visual Studio의 도구들)를 열어서
All Objects에서 ActiveX의 Project Name, 혹은
GUID(Project Name이 지정되지 않았을 경우 GUID로 object가 연결됨)를 선택하면
참조하는 ocx파일의 경로가 나타난다.(대부분 project/release/projectname.ocx일거다)
이 경로를 탐색기등으로 복사한 후,(파일경로 .ocx까지)
시작>실행>regsvr32 /u '경로'>엔터
하면 '경로'의 DLLUnregisterServer 성공 이라고 뜬다.
그럼 이제 웹에서 받아서 테스트 ㄱㄱ
테스트 후 다시 Visual c++에서 릴리즈 하면 다시 경로가 로컬로 덮어씌워진다-_-
참조하는 ocx의 경로는 이미 지정되있는 경로가 웹일 경우엔 로컬로 덮어씌워지지만,
어째서인지 지정되있는 경로가 로컬일 경우에는
웹 경로가 덮어씌워 지지 않는다. 왜일까 -_-도대체 왜 -_-;
아무튼 그렇기 때문에, 필수로 거쳐야 한다.
글
MFC ActiveX 복제시 ocx GUID 변경방법
같은 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는 변경하지 않음***