关于用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才行的,经过辛勤搜索终于在某个网站的某个角落找到了这段代码:
页面上
<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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?