sitelink1 http://blog.naver.com/bloodguy80?Redirec...0045183527 
sitelink2 http://blog.mrlatte.net/2009/09/activex.html 
sitelink3  
sitelink4  
extra_vars4  
extra_vars5  
extra_vars6  

일반적으로 ActiveX 설치확인시 사용하는 방법은 아래와 같다.

레지스트리에 등록되는 ProgId 값으로 검사하는 방법이다.

 

function ActiveX설치확인(ProgId)

{

  var isInstall = false;

  try {

    var obj = new ActiveXObject(ProgId);

    if (obj) return true;

  } catch (e) {

    return false;

  }

 

  return false;

}

 

 

다 잘되는데 문제가 하나 있는데,

같은 종류지만 버전이 낮은 ActiveX가 설치되어 있을 경우이다.

이럴 경우 자동으로 업데이트를 시도하게 되는데 위의 저 'ActiveX설치확인()' 함수를 호출할 때 ActiveXObject 를 하나 만들어 버려서,

업데이트를 할 수 없게되고 재부팅을 하라고 한다.

그러므로 원활한 버전 업데이트까지 염두에 둔다면 ActiveXObject를 생성해서 검사하면 안되고,

Object의 특정 property를 통해 검사하는 게 필요할 듯 하다.

method는 안된다. 만약 ActiveX가 설치되지 않은 상태에서 method의 이름으로 검사하면 자바스크립트 에러가 난다.

 

예를 들어, 어떤 ActiveX 오브젝트의 property 중 이름을 나타내는 name 이란게 있다고 치고 문자열이라고 칠 때,

아래와 같이 검사하면 되겠다.

 

function ActiveX설치확인(objName)

{

  var obj = document.getElementById(objName);

  if (obj) {

    if (obj.name!='[undefined]') return true;

  }

  return false;

}


특히 우리나라 웹사이트를 들어다 보면 ActiveX설치를 요구하는 웹 페이지를 많이 볼 수 있다. 금융권 사이트에 들어갈 때면 ActiveX설치 요구가 무척이나 많다. 너무 많은 ActiveX요구가 있을 땐 잘못하면 사용자들의 기분을 상하게 할 수도 있고 매번 페이지를 열 때마다 AcitveX설치를 확인하는 작업과 설치가 되어있지 않았을 때 cab파일을 다운로드 받아야 하는 시간 때문에 페이지 다운로드 시간이 오래 걸릴 수도 있다. 이런 부분을 해결하고자 ActiveX설치 여부를 확인할 수 있는 javascript를 찾아봤다. 이걸 이용해 페이지 사용자들의 ActiveX기능 요구 시 설치 여부를 확인하고 설치할 수 있도록 해줄 수가 있다.

ActiveX 설치확인 Javascript

var ActiveXDetector = {
    ACTIVEX_OBJECT_NAME: "YOUR ACTIVEX OBJECT NAME",
    getActiveX: function() {
        try{
            var obj = new ActiveXObject(this.ACTIVEX_OBJECT_NAME);
            if(obj) return obj;
            else ret = null;
        }catch(e){
            ret = null;
        }
        return ret;
    }
}

if(ActiveXDetector.getActiveX()) {
    alert("ActiveX 설치");
}else {
    alert("ActiveX 설치 안됨");
}

ActiveXObject

ActiveXObject의 함수 원형은 아래와 같고 2가지 인수를 제공한다.
http://msdn2.microsoft.com/ko-kr/library/6958xykx(VS.80).aspx

function ActiveXObject(ProgID : String [, location : String])

ProgID

필수적 요소. "serverName.typeName" 형식의 문자열입니다. 여기서 serverName은 개체를 제공하는 응용 프로그램 이름이고 typeName은 만들 개체의 형식 또는 클래스 이름입니다.

location

선택적 요소. 개체가 만들어질 네트워크 서버의 이름입니다.

이를 활용하면 Excel 의 설치여부나 FlashPlayer의 설치여부도 확인할 수 있다.

Excel = new ActiveXObject("Excel.Application");
FlashPlayer = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.9");

참고로 FlashPlayer는 버전마다 개체 이름이 변경된다.

ShockwaveFlash.ShockwaveFlash.9
ShockwaveFlash.ShockwaveFlash.8
ShockwaveFlash.ShockwaveFlash.7
ShockwaveFlash.ShockwaveFlash.6
...
이런 식으로 가능하다.

결론
위와 같은 javascript는 개체이름이 변경되지 않았다면 새로운 버전의 ActiveX를 설치를 강제해야 하는 상황이라면 확실한 버전확인은 힘들 것이다. 때문에 ActiveX의 설치여부와 버전을 좀 더 확실히 하기 위해서 개체 이름을 버전마다 바꾸는 것도 방법이겠지만 그것보다는 ActiveX의 버전정보를 반환하는 Method를 추가해 배포하는 것이 좋을 것이다.



소스 내용으로 미루어보아 ActiveX DOM Element 를 직접 접근하여 ActiveX 프로그램이 제공하는 속성을 검사했을때 undefined 인지 아닌지로 설치 여부를 판단한다는 것 같다.
두번째 방법은 해당 ActiveX 프로그램에 대해 알고 있어야만 사용할 수 있다.

그래서 다음의 방법을 찾아냈다.
프로그램 개발시 적용 가능한 방법대로 한번씩 적용해보는게 낫겠다.

<OBJECT TYPE="application/x-oleobject" CODEBASE="test.cab#version=1,0,0,0" ID="testCtrl" CLASSID="CLSID:923E232E-68F3-4B89-8B56-4FE522E7F959" WIDTH=100 HEIGHT=20>

위와 같을 경우

object 설정내에 onError="activex_error()" 를 추가 함으로써

설치가 되지 않았을 경우에 자바스크립트로 설치여부 확인이 가능합니다.

아래와 같이 사용하시면 됩니다.

<script>
function activex_error(){ 
alert("설치가 되지 않았습니다");
</script>
<OBJECT TYPE="application/x-oleobject" CODEBASE="test.cab#version=1,0,0,0" ID="testCtrl" onError="activex_error()" CLASSID="CLSID:923E232E-68F3-4B89-8B56-4FE522E7F959" WIDTH=100 HEIGHT=20>


출처 : PHPSCHOOL

번호 제목 글쓴이 날짜 조회 수
237 사용자 모듈 만들기 황제낙엽 2019.07.09 41735
236 User Agent 정보 모음 file 황제낙엽 2011.02.22 7768
235 페이지 스크롤 끝 확인 황제낙엽 2011.10.24 6230
234 숫자 여부와 자리수를 체크 하는 예제 황제낙엽 2009.01.12 5265
233 User Agent Parser들 황제낙엽 2017.11.20 4132
» ActiveX 설치 여부를 검사하는 스크립트 황제낙엽 2011.02.13 4053
231 [JavaScript Tutorials] Handling runtime errors in JavaScript using try/catch/finally (해석중) 황제낙엽 2009.04.08 2784
230 브라우저의 새로고침과 종료에 대한 이벤트 황제낙엽 2017.08.11 2725
229 연속해서 스트림 받기 (flush data from servlet to jsp with ajax) 황제낙엽 2013.01.04 2428
228 오류:호출자(서버 응용 프로그램이 아닌 서버)가 사용될 수 없어서 사라졌습니다. file 황제낙엽 2012.03.14 1949
227 외부 라이브러리 (.js) 의 바람직하지 않은 동적 로딩 (eval함수 이용) 황제낙엽 2012.01.18 1851
226 window.postMessage 이해하기 file 황제낙엽 2017.10.16 1612
225 부동소수점 (floating-point) file 황제낙엽 2018.03.26 1122
224 javascirpt IME-Mode 설정하기 황제낙엽 2010.08.17 1112
223 경과 시간 구하기 황제낙엽 2019.10.04 1071
222 CORS(Cross-Origin Resource Sharing) - 4 file 황제낙엽 2017.03.07 873
221 각 브라우저 별 User Agent 정보 황제낙엽 2011.02.22 823
220 중첩 함수, 함수 클로저 황제낙엽 2008.08.12 820
219 자바스크립트의 쉬프트 연산자 (Shift Operator) 와 음수 (Negative) 이야기 황제낙엽 2012.05.31 726
218 Memory leak 및 성능 측정 도구 file 황제낙엽 2011.11.23 666