기존 ActiveX 컨트롤 업그레이드
기존 ActiveX 컨트롤(이전의 OLE 컨트롤)은 수정 없이 인터넷에서 사용할 수 있습니다. 그러나 컨트롤을 수정하여 성능을 향상시킬 수 있습니다.
Important
ActiveX는 새로운 개발에 사용하지 않아야 하는 레거시 기술입니다. ActiveX를 대체하는 최신 기술에 관한 자세한 내용은 ActiveX 컨트롤을 참조하세요. ActiveX 컨트롤에 대한 지원은 이후 버전의 Internet Explorer에서 사용되지 않으며 최신 브라우저에서 지원되지 않습니다. Microsoft는 더 이상 웹에 액세스할 수 있는 ActiveX 구성 요소를 제공하지 않습니다.
웹 페이지에서 컨트롤을 사용하는 경우 추가 고려 사항이 있습니다. .ocx 파일 및 모든 지원 파일은 대상 컴퓨터에 있거나 인터넷을 통해 다운로드해야 합니다. 이렇게 하면 코드 크기 및 다운로드 시간을 중요하게 고려해야 합니다. 다운로드는 서명된 .cab 파일로 패키지할 수 있습니다. 컨트롤을 스크립팅에 안전하며 초기화에 안전한 것으로 표시할 수 있습니다.
이 문서에서는 다음 토픽을 설명합니다.
ActiveX 컨트롤: 최적화에 설명된 대로 최적화를 추가할 수도 있습니다. 인터넷의 ActiveX 컨트롤에 설명된 대로 모니커를 사용하여 속성 및 대형 BLOB을 비동기적으로 다운로드할 수 있습니다.
다운로드를 위한 패키징 코드
이 주제에 대한 자세한 내용은 ActiveX 컨트롤 패키징을 참조 하세요.
CODEBASE 태그
ActiveX 컨트롤은 태그를 사용하여 <OBJECT>
웹 페이지에 포함됩니다. 태그의 <OBJECT>
매개 변수는 CODEBASE
컨트롤을 다운로드할 위치를 지정합니다. CODEBASE
는 여러 다른 파일 형식을 성공적으로 가리킬 수 있습니다.
OCX 파일과 함께 CODEBASE 태그 사용
CODEBASE="http://example.contoso.com/mycontrol.ocx#version=4,
70,
0,
1086"
이 솔루션은 컨트롤의 .ocx 파일만 다운로드하고 지원 DLL이 클라이언트 컴퓨터에 이미 설치되어 있어야 합니다. Internet Explorer는 Visual C++ 컨트롤에 대한 지원 DLL과 함께 제공되므로 Visual C++로 빌드된 Internet Explorer 및 MFC ActiveX 컨트롤에 대해 작동합니다. ActiveX 컨트롤이 지원되는 다른 인터넷 브라우저를 사용하여 이 컨트롤을 보는 경우 이 솔루션이 작동하지 않습니다.
INF 파일과 함께 CODEBASE 태그 사용
CODEBASE="http://example.contoso.com/trustme.inf"
.inf 파일은 .ocx 및 해당 지원 파일의 설치를 제어합니다. .inf 파일에 서명할 수 없으므로 이 메서드를 사용하지 않는 것이 좋습니다(코드 서명에 대한 포인터에 대한 서명 코드 참조).
CAB 파일과 함께 CODEBASE 태그 사용
CODEBASE="http://example.contoso.com/acontrol.cab#version=1,
2,
0,
0"
캐비닛 파일은 MFC를 사용하는 ActiveX 컨트롤을 패키지하는 권장 방법입니다. 캐비닛 파일에서 MFC ActiveX 컨트롤을 패키징하면 .inf 파일을 포함하여 ActiveX 컨트롤 및 종속 DLL(예: MFC DLL)의 설치를 제어할 수 있습니다. CAB 파일을 사용하면 코드를 자동으로 압축하여 더 빠르게 다운로드할 수 있습니다. 구성 요소 다운로드에 .cab 파일을 사용하는 경우 각 개별 구성 요소보다 전체 .cab 파일에 서명하는 것이 더 빠릅니다.
CAB 파일 만들기
캐비닛 파일을 만드는 도구는 이제 Windows SDK의 일부입니다.
가리키는 CODEBASE
캐비닛 파일에는 ActiveX 컨트롤에 대한 .ocx 파일과 설치를 제어할 .inf 파일이 포함되어야 합니다. 컨트롤 파일의 이름과 .inf 파일을 지정하여 캐비닛 파일을 만듭니다. 이 캐비닛 파일의 시스템에 이미 있을 수 있는 종속 DLL은 포함하지 마세요. 예를 들어 MFC DLL은 별도의 캐비닛 파일에 패키지되고 제어 .inf 파일에서 참조됩니다.
CAB 파일을 만드는 방법에 대한 자세한 내용은 CAB 파일 만들기를 참조 하세요.
INF 파일
다음 예제 spindial.inf는 MFC Spindial 컨트롤에 필요한 지원 파일 및 버전 정보를 나열합니다. mfc42.cab는 Microsoft에서 제공하고 서명합니다.
Contents of spindial.inf:
[mfc42installer]
file-win32-x86=http://example.contoso.com/controls/vc/mfc42.cab
[Olepro32.dll] - FileVersion=5,
0,
4261,
0
[Mfc42.dll] - FileVersion=6,
0,
8168,
0
[Msvcrt.dll] - FileVersion=6,
0,
8168,
0
<OBJECT> 태그
다음 예제에서는 태그를 <OBJECT>
사용하여 MFC Spindial 샘플 컨트롤을 패키지하는 방법을 보여 줍니다.
<OBJECT ID="Spindial1" WIDTH=100 HEIGHT=51
CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
CODEBASE="http://example.contoso.com/spindial.cab#Version=1,0,0,001">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
<PARAM NAME="NeedlePosition" VALUE="2">
</OBJECT>
이 경우 spindial.cab에는 spindial.ocx 및 spindial.inf의 두 파일이 포함됩니다. 다음 명령은 캐비닛 파일을 빌드합니다.
C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf
매개 변수는 -s 6144
코드 서명을 위해 캐비닛의 공간을 예약합니다.
버전 태그
여기에서 #Version
CAB 파일로 지정된 정보는 태그의 CLASSID 매개 변수로 지정된 컨트롤에 <OBJECT>
적용됩니다.
지정된 버전에 따라 컨트롤을 강제로 다운로드할 수 있습니다. CODEBASE 매개 변수를 OBJECT
포함한 태그의 전체 사양은 W3C 참조를 참조하세요.
스크립팅 및 초기화를 위한 컨트롤 금고 표시
웹 페이지에 사용되는 ActiveX 컨트롤은 스크립팅에 안전하며 실제로 안전한 경우 초기화할 수 있는 안전한 것으로 표시되어야 합니다. 안전한 컨트롤은 디스크 IO를 수행하거나 컴퓨터의 메모리 또는 레지스터에 직접 액세스하지 않습니다.
컨트롤은 스크립팅에 안전하며 레지스트리를 통해 초기화해도 안전한 것으로 표시될 수 있습니다. 레지스트리의 스크립팅 및 지속성을 위해 컨트롤을 안전한 것으로 표시하도록 다음과 유사한 항목을 추가하도록 수정 DllRegisterServer
합니다. 다른 방법은 .를 구현 IObjectSafety
하는 것입니다.
컨트롤에 대한 GUID(Globally Unique Identifiers)를 정의하여 스크립팅 및 지속성을 위해 안전하게 표시합니다. 안전하게 스크립티할 수 있는 컨트롤에는 다음과 유사한 레지스트리 항목이 포함됩니다.
HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
영구 데이터에서 안전하게 초기화할 수 있는 컨트롤은 다음과 유사한 레지스트리 항목을 사용하여 지속성을 위해 안전한 것으로 표시됩니다.
HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
다음과 유사한 항목(대신 컨트롤의 클래스 ID {06889605-B8D0-101A-91F1-00608CEAD5B3}
대체)을 추가하여 키를 다음 클래스 ID와 연결합니다.
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
라이선스 문제
웹 페이지에서 사용이 허가된 컨트롤을 사용하려면 사용권 계약이 인터넷에서 사용할 수 있는지 확인하고 해당 라이선스 패키지 파일(LPK)을 만들어야 합니다.
Internet Explorer를 실행하는 컴퓨터에 컨트롤 사용이 허가되지 않은 경우 라이선스가 부여된 ActiveX 컨트롤이 HTML 페이지에 제대로 로드되지 않습니다. 예를 들어 Visual C++를 사용하여 라이선스가 부여된 컨트롤을 빌드한 경우 컨트롤을 사용하는 HTML 페이지가 컨트롤이 빌드된 컴퓨터에서 제대로 로드되지만 라이선스 정보가 포함되지 않는 한 다른 컴퓨터에 로드되지 않습니다.
Internet Explorer에서 사용이 허가된 ActiveX 컨트롤을 사용하려면 공급업체의 사용권 계약에 검사 제어 라이선스가 허용하는지 확인해야 합니다.
재배포
인터넷에서 컨트롤 사용
Codebase 매개 변수 사용
라이선스가 없는 컴퓨터의 HTML 페이지에서 라이선스가 부여된 컨트롤을 사용하려면 LPK(라이선스 패키지 파일)를 생성해야 합니다. LPK 파일에는 HTML 페이지의 라이선스가 있는 컨트롤에 대한 런타임 라이선스가 포함되어 있습니다. 이 파일은 ActiveX SDK와 함께 제공되는 LPK_TOOL.EXE를 통해 생성됩니다.
LPK 파일을 만들려면
컨트롤을 사용하도록 허가된 컴퓨터에서 LPK_TOOL.EXE를 실행합니다.
라이선스 패키지 작성 도구 대화 상자의 사용 가능한 컨트롤 목록 상자에서 HTML 페이지에서 사용할 라이선스가 부여된 각 ActiveX 컨트롤을 선택하고 추가를 클릭합니다.
저장 및 끝내기를 클릭하고 LPK 파일의 이름을 입력합니다. 그러면 LPK 파일이 만들어지고 애플리케이션이 닫힙니다.
HTML 페이지에 사용이 허가된 컨트롤을 포함하려면
- HTML 페이지를 편집합니다. HTML 페이지에서 다른 <OBJECT> 태그 앞에 License Manager 개체에 대한 OBJECT> 태그를 삽입<합니다. 라이선스 관리자는 Internet Explorer와 함께 설치된 ActiveX 컨트롤입니다. 해당 클래스 ID는 아래에 나와 있습니다. License Manager 개체의 LPKPath 속성을 LPK 파일의 경로 및 이름으로 설정합니다. HTML 페이지당 하나의 LPK 파일만 가질 수 있습니다.
<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
</OBJECT>
<라이선스 관리자 태그 뒤에 라이선스가 있는 컨트롤에 대한 OBJECT> 태그를 삽입합니다.
예를 들어 Microsoft Masked Edit 컨트롤을 표시하는 HTML 페이지는 다음과 같습니다. 첫 번째 클래스 ID는 라이선스 관리자 컨트롤에 대 한, 두 번째 클래스 ID는 마스크 편집 컨트롤에 대 한 합니다. 앞에서 만든 .lpk 파일의 상대 경로를 가리키도록 태그를 변경하고 컨트롤에 대한 클래스 ID를 포함한 개체 태그를 추가합니다.
<NCompass ActiveX 플러그 인을 사용하는 경우 LPK 파일에 대한 EMBED> 특성을 삽입합니다.
다른 활성 사용 브라우저(예: NCompass ActiveX 플러그 인을 사용하는 Netscape)에서 컨트롤을 볼 수 있는 경우 아래와 같이 EMBED> 구문을 추가<해야 합니다.
<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="maskedit.lpk">
<EMBED SRC = "maskedit.LPK">
</OBJECT>
<OBJECT CLASSID="clsid:C932BA85-4374-101B-A56C-00AA003668DC" WIDTH=100 HEIGHT=25>
</OBJECT>
컨트롤 라이선스에 대한 자세한 내용은 ActiveX 컨트롤: ActiveX 컨트롤 라이선스를 참조 하세요.
서명 코드
코드 서명은 코드 원본을 식별하고 코드가 서명된 이후 변경되지 않도록 하기 위해 설계되었습니다. 브라우저 보안 설정에 따라 코드를 다운로드하기 전에 사용자에게 경고가 표시될 수 있습니다. 사용자는 특정 인증서 소유자 또는 회사를 신뢰하도록 선택할 수 있습니다. 이 경우 신뢰할 수 있는 사용자가 서명한 코드가 경고 없이 다운로드됩니다. 코드는 변조를 방지하기 위해 디지털 서명됩니다.
신뢰 경고 메시지를 표시하지 않고 컨트롤을 자동으로 다운로드할 수 있도록 최종 코드가 서명되었는지 확인합니다. 코드에 서명하는 방법에 대한 자세한 내용은 ActiveX SDK의 Authenticode에 대한 설명서를 검사 CAB 파일 서명을 참조하세요.
신뢰 및 브라우저 보안 수준 설정에 따라 서명자 또는 회사를 식별하는 인증서가 표시될 수 있습니다. 안전 수준이 없거나 서명된 컨트롤의 인증서 소유자를 신뢰할 수 있는 경우 인증서가 표시되지 않습니다. 브라우저 보안 설정에 따라 컨트롤이 다운로드되는지 여부와 인증서가 표시되는지에 대한 자세한 내용은 Internet Explorer 브라우저 금고ty 수준 및 컨트롤 동작을 참조하세요.
디지털 서명 보장 코드는 서명된 이후 변경되지 않았습니다. 코드의 해시가 생성되어 인증서에 포함됩니다. 이 해시는 나중에 코드를 다운로드한 후 실행하기 전에 가져온 코드의 해시와 비교됩니다. Verisign과 같은 회사는 코드에 서명하는 데 필요한 프라이빗 및 퍼블릭 키를 제공할 수 있습니다. ActiveX SDK는 테스트 인증서를 만들기 위한 유틸리티인 MakeCert와 함께 제공합니다.
색상표 관리
컨테이너는 색상표를 결정하고 앰비언트 속성인 DISPID_AMBIENT_PALETTE 사용할 수 있도록 합니다. 컨테이너(예: Internet Explorer)는 페이지의 모든 ActiveX 컨트롤에서 자체 색상표를 결정하는 데 사용되는 색상표를 선택합니다. 이렇게 하면 디스플레이 깜박임이 방지되고 일관된 모양이 표시됩니다.
컨트롤은 색상표에 대한 변경 내용 알림을 처리하도록 재정 OnAmbientPropertyChange
의할 수 있습니다.
색상표를 그리기 위해 색 집합을 반환하도록 컨트롤을 재정 OnGetColorSet
의할 수 있습니다. 컨테이너는 반환 값을 사용하여 컨트롤이 색상표를 인식하는지 여부를 확인합니다.
OCX 96 지침에 따라 컨트롤은 항상 배경에서 색상표를 인식해야 합니다.
앰비언트 색상표 속성을 사용하지 않는 이전 컨테이너는 WM_QUERYNEWPALETTE 및 WM_PALETTECHANGED 메시지를 보냅니다. 컨트롤은 이러한 메시지를 재정 OnQueryNewPalette
의하고 OnPaletteChanged
처리할 수 있습니다.
Internet Explorer 브라우저 금고ty 수준 및 제어 동작
브라우저에는 사용자가 구성할 수 있는 안전 수준에 대한 옵션이 있습니다. 웹 페이지에는 사용자의 컴퓨터에 해를 끼칠 수 있는 활성 콘텐츠가 포함될 수 있으므로 브라우저를 사용하면 사용자가 안전 수준에 대한 옵션을 선택할 수 있습니다. 브라우저에서 안전 수준을 구현하는 방식에 따라 컨트롤이 다운로드되지 않거나 사용자가 런타임에 컨트롤을 다운로드할지 여부를 선택할 수 있도록 인증서 또는 경고 메시지가 표시됩니다. Internet Explorer의 높음, 중간 및 낮은 안전 수준에서 ActiveX 컨트롤의 동작은 아래에 나열되어 있습니다.
상위 금고ty 모드
서명되지 않은 컨트롤은 다운로드되지 않습니다.
서명된 컨트롤은 신뢰할 수 없는 경우 인증서를 표시합니다(사용자는 지금부터 이 인증서 소유자의 코드를 항상 신뢰하는 옵션을 선택할 수 있음).
안전한 것으로 표시된 컨트롤만 영구 데이터를 가지거나 스크립터블할 수 있습니다.
중간 금고ty 모드
서명되지 않은 컨트롤은 다운로드하기 전에 경고를 표시합니다.
신뢰할 수 없는 경우 서명된 컨트롤에 인증서가 표시됩니다.
안전으로 표시되지 않은 컨트롤은 경고를 표시합니다.
낮은 금고ty 모드
컨트롤은 경고 없이 다운로드됩니다.
스크립팅 및 지속성은 경고 없이 발생합니다.
참고 항목
MFC 인터넷 프로그래밍 작업
MFC 인터넷 프로그래밍 기본 사항
MFC ActiveX 컨트롤: ActiveX 컨트롤 라이선스