윈도우 관련 정보나 팁을 공유하는 곳입니다.
  • 웹미니 한줄 전광판 영역 입니다.
글 수 93
수정된 인터넷 익스플로러에서 상호작용 ActiveX 컨트롤 활성화 가이드


소개
사용자들은 APPLET (영문), EMBED (영문), 또는 OBJECT (영문) 요소로 로드된 마이크로소프트 ActiveX 컨트롤과 직접 상호작용할 수 없습니다. ActiveX 컨트롤의 사용자 인터페이스를 활성화 한 후에 상호작용이 가능합니다. 이 문서는 Microsoft Internet Explorer가 어떻게 ActiveX컨트롤을 처리하는 지를 설명하고 ActiveX 컨트롤의 인터페이스를 활성화하여 ActiveX 컨트롤을 로드하는 방법을 보여줍니다. 그리고 이러한 동작이 내게 필요한 옵션 도구와 웹 브라우저 컨트롤을 호스팅하는 응용프로그램에 미치는 영향에 대해 설명합니다.

  

ActiveX 컨트롤 활성화 이해
상호 작용 컨트롤 이란 사용자 인터페이스를 제공하는 ActiveX 컨트롤을 의미 합니다. 웹 페이지 내에서 APPLET, EMBED 또는 OBJECT를 사용하여 이런 ActiveX 컨트롤을 로드하면, 사용자가 활성화 할 때까지 그 컨트롤의 사용자 인터페이스는 차단됩니다. 웹 페이지 내에서 APPLET, EMBED 또는OBJECT를 사용하여 여러 컨트롤 들을 로드하는 경우, 각 상호작용 컨트롤은 반드시 개별적으로 활성화 되야 합니다.

컨트롤이 비활성화되면 Dynamic HTML (DHTML) 이벤트들은 차단되며 WM_CREATE (영문), WM_DESTROY (영문), WM_MOVE (영문), WM_PAINT (영문), WM_QUIT (영문) 와 같이 모양과 시스템 안정성에 중요한 영향을 미치는 윈도우 메시지만 처리합니다. 비활성 컨트롤이 처리할 수 있는 윈도우 메시지의 목록은 부록을 참조합니다.

상호작용 컨트롤을 활성화 하려면 마우스로 클릭하거나 탭 키를 사용하여 해당 컨트롤에 포커스를 맞춘 후 스페이스바 또는 엔터 키를 누릅니다.

비활성화된 컨트롤은 사용자 입력에 대해 응답하지 않지만 상호작용과 관련 없는 동작은 실행 합니다. 예를 들어, 음악 파일을 연주하기 위해 마이크로소프트 윈도우 미디어 플레이어를 사용하는 웹 페이지를 열면 별도의 동작 없이 예전과 같이 음악을 들을 수 있지만, 아래 그림처럼 컨트롤의 사용자 인터페이스가 활성화될 때까지 윈도우 미디어 플레이어와 상호작용은 할 수 없습니다.
http://www.microsoft.com/korea/windows/ie/activex/activate/01.jpg

참고 비활성된 컨트롤은 사용자의 상호작용에 직접 응답하지 않는 반면 스크립트에 의한 명령에는 응답합니다.
외부의 스크립트 파일에 의해 로드된 상호 작용 컨트롤은 사용자의 상호 작용에 즉시 응답합니다.

  

외부 스크립트에 의한 상호 작용 ActiveX 컨트롤 로드
상호 작용 ActiveX 컨트롤이 사용자 입력에 즉시 응답하도록 웹 페이지를 생성하려면 외부 스크립트 파일에서 Microsoft JScript를 사용하여 컨트롤을 로드 합니다. 다음 예제는 동적으로 컨트롤을 로드하기 위해 document (영문).write (영문)를 사용합니다.

// HTML File
<html>
  <body leftmargin=0 topmargin=0 scroll=no>
    <script src="Embed.js"></script>
  </body>
</html>

// embed.js
document.write('<embed src="examplecontrol">')
또한 외부 스크립트 파일에서 해당 요소의 outerHTML (영문) 속성을 수정하여 동적으로 컨트롤을 로드할 수 있습니다.

// HTML File
<html>
  <body>
    <script src="embedControlOuterHTML.js"></script>
  </body>
</html>

// embedControlOuterHTML.js
embedControlLocation.outerHTML =
  '<embed src="examplecontrol">';
다음 예제는 OBJECT 요소를 사용하여 ActiveX 컨트롤을 불러오기 위해 document.createElement (영문) 를 사용합니다.

예제 보기

// HTML File
<html>
  <body>
    <div id="createElementExplicit">
      <script src="createElementExplicit.js"></script>
  </body>
</html>

// createElementExplicit.js
var myObjectElement = document.createElement('object');
myObjectElement.classid= "clsid:098F2470-BAE0-11CD-B579-08002B30BFEB";

createElementExplicit.appendChild(myObjectElement);
myObjectElement.URL = "example.wma";
myObjectElement.controls.play();
다음 예제는 OBJECT 요소에 매개 변수(PARAM) 값을 지정하여 ActiveX 컨트롤을 불러오기 위해 createElement 를 사용합니다.

예제 보기

// HTML File
<html>
  <body>
    <div id="embedControlLocation">
      <script id="elementid" src="embedControl.js"></script>
    </div>
  </body>
</html>


// embedControl.js
var myObjectElement = document.createElement('<object id="elementid"
  classid="clsid:098F2470-BAE0-11CD-B579-08002B30BFEB"></object>');

var myParamElement1 = document.createElement('<PARAM NAME=movie
  value="example.avi">');  
var myParamElement2 = document.createElement('<Param name=quality
  value=high>');
var myParamElement3 = document.createElement('<Param name=bgcolor
  value=#FFFFFF>');

myObjectElement.appendChild(myParamElement1);
myObjectElement.appendChild(myParamElement2);
myObjectElement.appendChild(myParamElement3);

embedControlLocation.appendChild(myObjectElement);
외부 스크립트(external script)이기 위해서는, 스크립트가 외부 파일로부터 제공되며 또한 최종 스크립트 태그가 주 HTML 페이지에 있어서 인라인(inline)이 아니어야 합니다. 스크립트가 HTML 페이지에서 인라인 스크립트 태그로 사용되면, 이 스크립트는 본래의 HTML 문서의 일부로 간주되므로 여전히 사용자의 활성화가 필요합니다. 예를 들어, 다음의 코드는 스크립트가 외부 파일로부터 제공된 스크립트지만 여전히 활성화가 필요합니다.

// HTML File
<html>
  <body>
    <div id="embedControlLocation">
      <script id="elementid" src="embedControl.js"></script>
    </div>
  </body>
</html>


// embedControl.js
document.writeln('<script>');
document.write('document.writeln('');
document.write('<object
classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" width="100"
height="100"></object>');
document.write('');');
document.writeln('</script>');


  

내게 필요한 옵션에 미치는 영향
내게 필요한 옵션 도구(Accessibility Tool)가 ActiveX 컨트롤을 만나면, 그 개체의 IAccessible (영문) 인터페이스를 사용하여 컨트롤에 관한 정보를 얻을 수 있습니다. 비활성 컨트롤들은 IAccessible::accDoDefaultAction (영문) 메서드와 함께 활성화 되며 좀더 상세한 정보를 얻으려면 Software Driving Software: Active Accessibility-Compliant Apps Give Programmers New Tools to Manipulate Software (영문) 기사를 참조합니다.

주의 내게 필요한 옵션 도구는 ActiveX 컨트롤의 데이터와 그 자식 컨트롤(Children Control)의 데이터를 정확히 나타나기 위해 기본 동작 후 새로 고침을 해야 합니다.
  

Web Browser 컨트롤에 미치는 영향
기본적으로 Web Browser 컨트롤을 호스팅하는 응용 프로그램은 APPLET, EMBED 또는 OBJECT 요소가 로드하는 상호 작용 ActiveX 컨트롤을 차단하지 않습니다.

Internet Explorer와 같이 응용 프로그램에서 상호작용 컨트롤을 차단하려면 다음의 예제에서 보듯이 DOCHOSTUIINFO (영문) 구조체의 dwFlags 매개 변수에 DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE 플래그를 추가합니다.

HRESULT GetHostInfo(DOCHOSTUIINFO *pInfo)
{
   ...

    pInfo->cbSize = sizeof(DOCHOSTUIINFO);
    pInfo->dwFlags = { Other DOCHOSTUIFLAGs } |
                     DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE;  
   ...

    return S_OK;
}
또한 다음 레지스트리 키에 응용 프로그램 프로세스 이름을 추가하여 상호 작용 컨트롤을 차단할 수 있습니다.


HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
SOFTWARE
Microsoft
Internet Explorer
Main
FeatureControl
FEATURE_ENABLE_ACTIVEX_INACTIVATE_MODE
process_name.exe=0x00000001

주의 사용자가 레지스트리를 수정할 수 있기 때문에 DOCHOSTUIINFO 플래그 사용하여 상호작용하는 컨트롤을 차단하는 것이 더 좋은 방법입니다.

출처 : http://www.microsoft.com/korea/windows/ie/activex/activate/default.mspx

글쓴이가 작성한 다른 게시물

소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 BEST 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기 본문으로 바로가기
  • 추천수 50개이상
  • 추천수 30개이상
  • 추천수 20개이상
  • 추천수 10개이상
  • 추천수 3개이상
닫기

댓글 '1'

profile
title: [ani]깜빡이는 표정빽짱구 (14127)

2006.04.13 21:21:39

음 윈도우 업데이트하면서 문제점이 생기드만 코딩법을 좀 바꿔야하겠네. 추천!
List of Articles
번호 제목 글쓴이 날짜 추천 수 조회 수sort
93 hit Microsoft Office 2003에서 DOCX 안열릴때 [1] title: [ani]깜빡이는 표정빽짱구 2010-08-09 1 34437
92 hit best of best 윈도우xp 계정 administrator 이름변경하기 [1] title: [ani]깜빡이는 표정빽짱구 2006-06-02 32 17417
91 hit Dell 델 컴퓨터 공장초기화 방법 [1] title: [ani]깜빡이는 표정빽짱구 2013-01-20 5 16184
90 hit 익스플로러9 다운그레이드 file title: [ani]깜빡이는 표정빽짱구 2011-03-17   14233
89 hit 윈도우7에서 hosts 파일 수정하기 file [1] title: [ani]깜빡이는 표정빽짱구 2011-05-13   13650
88 hit best of best 윈도우에서 개인서버 구축하기 [1] title: [ani]깜빡이는 표정빽짱구 2006-03-08 30 13511
87 hit 윈도우XP 계정이름 변경하기 file title: [ani]깜빡이는 표정빽짱구 2009-02-16   12175
86 hit 윈7 에서 iso 파일 굽기 file [3] 얄리뽀 2009-11-08 1 11562
85 hit 메인보드 모델명 확인하기... [4] 반송지킴이 2009-11-13   10373
84 인터넷 익스플로러를 기본브라우져로 설정하기 title: [ani]깜빡이는 표정빽짱구 2005-12-28 17 9957
83 윈도우7 시작메뉴에 "실행" 메뉴 추가하기. [5] 레드후디 2010-01-16 1 9717
82 윈도우의 내 문서 바탕화면 즐겨찾기 아웃룩익스프레스의 저... 컴센스 2010-05-27   9304
81 best of best Visual C++ Liarary 런타임에러 - HncUpdate.exe file title: [ani]깜빡이는 표정빽짱구 2005-06-28 33 9304
80 전세계 우편번호를 확인 할 수 있는 사이트 성빈애비 2009-08-15   9245
79 best of best 인터넷 종료후 메모리 참조 오류 메세지 나올시 고찰 file title: [ani]깜빡이는 표정빽짱구 2006-01-30 24 8963
78 best of best Windows Vista 의 종류 file title: [ani]깜빡이는 표정빽짱구 2006-12-30 41 8665
77 amd64 , i386 폴더가 지워지지 않을때 file [2] title: [ani]깜빡이는 표정빽짱구 2010-04-21   8587
76 best of best 인터넷 익스플로러에서 상호작용 ActiveX 컨트롤 활성화 가이드 [1] title: [ani]보라색 나비바비인형 2006-04-13 37 8510
75 메인보드 제조사별 드라이버 다운로드하기 [4] 본체 2009-09-04   8488
74 윈도우7에서 네이트온 원격제어하기 file [1] title: [ani]깜빡이는 표정빽짱구 2011-09-15 1 8388