关于用JS检测有无安装某个软件,没有安装就提示下载的问题。

关于检测用户有无安装某个软件的问题

一、材料:

function ocxstatus() {

    var NewObj;

    try {

        NewObj = new ActiveXObject("TVANTSX.TvantsXCtrl.1");

        if (typeof NewObj != 'undefined') {

            NewObj = null;

            return true;

        }

    } catch (e) {

        NewObj = null;

        return false;

    }

}

二、问题:

上面黄色背景部分貌似是一个组件名称。现在不能解决的问题是不知道各个播放器的组件名称是什么,目前只知道clsId啊!!!

 

三、解决问题:

  上网找了很多资料,很多都是要知道知道clsId才行的,经过辛勤搜索终于在某个网站的某个角落找到了这段代码:

可以 用ActiveX js调用ActiveX
页面上
<OBJECT STYLE='display:none;' ID='byd_icc' NAME='byd_icc' classid='clsid:4E0841CC-655F-4355-ADEB-484A443FE3A7' CODEBASE='BYD_ICCR.CAB#version=1,0,0,0'></OBJECT>

body中加ActiveX对象

js调用
var tempCardID = byd_icc.getCardIDByHEX();//调用ActieX
if (tempCardID != "") {
this.trReadCard.stopAll();
this.loginUser(tempCardID);
byd_icc.clearCardID();
previousCardID = "";
}

  这种方法就是知道classid就可以解决问题的!!!但是坑爹的是,经过测试以上代码纯属坑爹,是不能实现的,M的欺骗了我的感情。

  看来,只有靠自己了。

  既然无法用代码方式实现使用classId检测有无安装某个软件,那么为什么不尝试着看看那个所谓的“组件名称”到底是什么呢?

我首先想到了安装文件,于是就在安装文件那里找,终于找到了这个东西PowerList.ocx 安装目录下的ActiveX控件,这时候真是喜出往外,十有八九就是她了。但是悲剧的是经过测试,证实,所谓的组件名称并不是它!!!。。。。。。。。。。。。。。。过了一会,我想,既然都知道了classid,classid又是在注册表中的,我为什么不尝试一下从注册表入手呢!!!于是我在注册表clsId目录下搜索软件对应的classid,终于被我发现了一个叫做ProId里面的东西很眼熟,额、、、就是它了,原来这种所谓的组件名称叫做ProId,注册表可查。接下来的问题很容易解决了,就算不知道classId,耐心点也可以在注册表中找到软件所谓的“组件名称”,也就是ProId。

 

 

 

 

 

 

 

posted @ 2011-08-28 17:33  windwos7  阅读(2603)  评论(1编辑  收藏  举报
点击留言