2012-07-18 2 views
1

레거시 시스템 향상 기능이 추가되었습니다. 그것은 VB6 + ASP (구식 ASP) 시스템이었습니다. 그래서 기본적으로 시스템은 데이터베이스 쿼리를 수행하고 결과를 activeX 객체 (OCX)로 푸시하여 정보가 바코드 형식으로 인쇄되도록합니다.VB6 OCX ClassID 결정 및 변경

로고를 인쇄하지 않도록 OCX를 수정하라는 요청을 받았지만 기존 인쇄용으로 원래대로 유지해야합니다. 따라서 원래의 이름으로 저장하고 성공적으로 수정했습니다.

시스템은 사용자 PC에 OCX를 설치해야합니다. 그러나 나는 두 가지 다른 인쇄 목적을 위해 두 개의 다른 OCX를 사용하는 대신 시스템이 두 인쇄물 모두에 대해 최신 OCX 만 사용한다는 것을 알아 챘습니다. OCX의 이름이 다르게 지정되었습니다. 두 사람이 공유하는 유일한 것은 CLASS ID입니다.

새롭게 컴파일 된 OCX의 클래스 ID를 어떻게 결정할 수 있습니까? 그리고 그것을 변경할 수 있습니까? 방법? 내가 ActiveX 컨트롤 (OCX) 처리 한 이후

+0

당신은 영혼을 얻었습니까? –

+1

@ImranKhanHunzai 대답을보세요 : P –

답변

2

OCX에는 ClassIds가 없습니다. 그러나 그 안에있는 통제는 그러합니다.

다양한 GUID (ClassIds 외에 다른 것들이 있습니다.)의 한 가지 쉬운 방법은 Visual Studio 6.0, Win2k Resource Kit 등과 함께 제공되는 OLE보기 도구를 통해 typelib 정보를 보는 것입니다.

+0

완벽한! 그래서 모든 컨트롤이 독특합니까? –

+1

질문을 이해한다면 예, 모든 컨트롤이나 클래스는 고유 ID를 필요로합니다. 그 이유는 그것이 (x.ocx, y.dll 등) 라이브러리가 내부에 있고 다른 세부 정보가 런타임에 위치하는 방식이기 때문입니다. – Bob77

2

CLASSID 오래된 제어의 개정을 통해 호환성을 유지 COM의 방법입니다. 당신은 정말로 그것을 바꾸고 싶지 않습니다. 동일한 기계에 두 가지 버전을 유지하는 것도 바람직하지 않습니다. 배너를 생략하는 "새로운"버전의 컨트롤을 만들고 컴파일러에서 새 CLSID를 컨트롤에 할당하여 경로를 깨끗하게 유지할 수 있습니다.

+1

새 컨트롤을 추가한다고하면 어떻게 OCX 클래스 ID를 확인할 수 있습니까? –