如何判断IE OCX插件正常安装?
项目中用到了一个第三方的ie ocx
控件,而经常遇到客户和测试小伙伴反馈相关功能无法正常使用,也没有友好提示。考虑到这个问题,必须要有一个ie ocx
控件的检查机制。
检查原理
创建ActiveXObject
对象去检查ocx
控件
let newObj = new ActiveXObject(servername, typename[, location])
参数问题
看起来很简单的,但是用起来我懵逼了,应用程序对象名称servername
这个参数怎么填呢?
插件供应商只提供了控件安装包,示例程序,clsid
<object id="NetVideo" classid="clsid:27E1A157-6A29-48AE-86C2-14591D90B4D4"></object>
于是我想应该可以从clsid
入手研究。
什么是clsid
class identifier(类标识符)也称为CLASSID或CLSID,是与某一个类对象相联系的唯一标记(UUID)。一个准备创建多个对象的类对象应将其CLSID注册到系统注册数据库的任务表中,以使客户能够定位并装载与该对象有关的可执行代码。
以上摘自百度百科,可以看到clsid
跟uuid
是类似的原理,用来进行插件的唯一标识。
根据clsid怎么查到servername
在MDN
上搜索ActiveXObject
词条,可以看到这么一句:
您可以在
HKEY_CLASSES_ROOT
注册注册表项中识别主机PC上的servername.typename的
值。
哦,可以看到是从注册表中去查的。于是我运行regedit
打开注册表查看,虽然知道是在HKEY_CLASSES_ROOT
目录下,但是这也太多了吧,怎么找得到?
当然还是要靠搜索功能,于是我根据clsid
的值27E1A157-6A29-48AE-86C2-14591D90B4D4
进行查找
搜索时间有点长,但是最终还是查到了,位置如下:
计算机\HKEY_CLASSES_ROOT\SDS_CMSCtrl.SDS_CMSCtrlCtrl.1
于是我猜想,servername
应该就是SDS_CMSCtrl.SDS_CMSCtrlCtrl.1
。经测试,果不其然。检查代码如下:
try {
const ocx = new ActiveXObject('SDS_CMSCtrl.SDS_CMSCtrlCtrl.1')
console.log(ocx)
} catch (error) {
this.$alert('您还未安装视频插件!', '提示')
}
这样一来,如果用户没有安装插件,马上能够得到提示,perfect!
扫一扫下方小程序码或搜索Tusi博客
,即刻阅读最新文章!
最新文章
- iOS json 解析遇到error: Error Domain=NSCocoaErrorDomain Code=3840 ";The operation couldn’t be completed.
- 【转】Oracle 执行计划(Explain Plan) 说明
- 关于腾讯云ubuntu服务器tomcat访问慢问题
- 创业小坑:内网域名 在windows下能nslookup,但ping不通,也无法访问。而在linux下正常。
- [No000019]不想背单词?看看游戏能否帮你
- 未签名有元程序集 Unsigned Friend Assemblies
- ROCK 聚类算法
- BeagleBone Black Linux驱动程序开发入门(0): 开发环境
- OpenCV在矩阵上的卷积
- WaitForSingleObject函数
- Calendar 时间日历简单例子
- Mahout文本向量化
- Jackson Annotation Examples
- OJ#1002 又是a+b
- JS高级前端开发群加群说明
- 细说 Django — web 前后端分离
- UVA 12338 Anti-Rhyme Pairs(hash + 二分)题解
- iOS开发- 隐藏键盘总结
- 【DUBBO】dubbo的registry配置
- GOF23设计模式之装饰模式(decorator)
热门文章
- 一个null,差点把系统给弄崩溃了
- Linux运维的第一周总结
- 在 Xcode9 中自定义文件头部注释和其他文本宏
- java 反射借助 asm 获取参数名称最优雅简单的方式
- Cannot forward after response has been committed问题的解决
- CodeForces1000A- Codehorses T-shirts
- HDU1561 The more ,The better (树形背包Dp)
- Android Studio 3.0下创建menu布局文件的图例
- Python爬虫技术:爬虫时如何知道是否代理ip伪装成功?
- unity3d 柏林噪声 PerlinNoise 规律 算法