chrome中使用AppEmit调用ocx使用文档,vue调用ocx

2024-04-17 14:36

本文主要是介绍chrome中使用AppEmit调用ocx使用文档,vue调用ocx,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

chrome中使用AppEmit调用ocx使用文档,vue调用ocx

需求背景

想要在chrome+Vue3项目内调用SDRdCard.ocx神思身份证读取器,因为ocx是IE浏览器内提供的,Vue3不支持IE浏览器。

了解到有安装浏览器插件的方式去实现,但是chrome在2020年12月后不再支持flash(NPAPI),而微软的edge也不支持ActiveX。

所以选了了使用中间件这种方式

  • AppEmit:收费和免费【免费版本,每次启动和第20、40、80…分钟时发消息会有弹窗,不在意的话可以选择】
  • 猿大师:收费

开发步骤

  1. 创建vue3项目

  2. 下载AppEmit

    https://www.appemit.com

  3. 运行AppEmit

    我调用的是SDRdCard.ocx,读取身份证功能,

    • 将SDRdCard.cab解压缩,获得到了 下面几个文件

      Getinfo.dll
      RdCard.dll
      SDRdCard.inf
      SDRdCard.ocx
      termbt.dll
      
    • 编写安装控件bat命令,将复制文件到系统目录,自行修改下面copy命令将解压后的文件都复制到系统目录

      # 安装控件64位.bat
      cd /d "%~dp0"
      copy  SDRdCard.ocx C:\windows\SysWOW64
      copy  RdCard.dll C:\windows\SysWOW64
      copy  Getinfo.dll C:\windows\SysWOW64
      copy  SDRdCard.dll C:\windows\SysWOW64
      copy  termbt.dll C:\windows\SysWOW64C:\windows\SysWOW64\regsvr32 SDRdCard.ocx# 安装控件32位.bat
      cd /d "%~dp0"copy  SDRdCard.ocx C:\windows\System32
      copy  RdCard.dll C:\windows\System32
      copy  Getinfo.dll C:\windows\System32
      copy  SDRdCard.dll C:\windows\System32
      copy  termbt.dll C:\windows\System32C:\windows\System32\regsvr32 SDRdCard.ocx
      
    • 根据系统位数安装执行不同的bat命令 安装控件64位.bat安装控件32位.bat

      注意:bat命令要和要移动的文件[SDRdCard.cab解压缩获得的文件]在相同目录

    • AppEmit根目录放入SDRdCard.ocx文件

    • 双击运行AppEmit.exe文件,首次运行可使用管理员身份运行

  4. 在运行的AppEmit根目录编写index.htm

    <html>
    <head><title>身份证读取</title>
    </head>
    <body>
    <OBJECT classid=clsid:F1317711-6BDE-4658-ABAA-39E31D3704D3 width=0 height=0 align="center"codebase="SDRdCard.cab#version=1,3,6,4" id="SDRdCardDom" HSPACE=0 VSPACE=0>
    </OBJECT>
    <center><h3> 身份证读取演示 </h3></center><input type="button" onclick="javascript:OpenCard()" value="OpenPort" />
    <input type="button" onclick="javascript:readCard()" value="readCard" />
    <br>
    <script language="javascript">function OpenCard() {const openRes = SDRdCardDom.OpenPort(); // SDRdCard内的方法alert('OpenPort:' + (openRes == 0 ? '成功' : '失败'))}function readCard() {const readcardRes =SDRdCardDom.readcard();// SDRdCard内的方法alert('readcard:' + (readcardRes == 0 ? '成功' : '失败'))if (readcardRes == 0) {alert('身份证号:' + SDRdCardDom.CardNo)}}
    </script>
    </body>
    </html>
    
  5. 编写vue读取组件

      <template><button @click="resetPage">重新连接</button><div id="AppEmbed1" style="border: solid 2px #F0F0F0; min-width:30px;min-height:20px;width:600px;height:400px" ></div></template><script setup>import { onBeforeUnmount, onMounted, ref } from 'vue'function initAppEmit() {// 回调方法-可选AE.callbackFunc = [{'equ': {'service': 'appemit', 'rid': 0, 'clientAuth': 1}, 'func': function(res) {console.log('✨ websocket连接状态:✨ ', res)openPage()}}]// AppEmit默认80端口,可在config.ini内修改AE.InitApp('ws://localhost:80/appemit?cid=00000-1&sid=1&flag=1', AE.callbackFunc)}// 打开页面const openPage = () => {const ReqPar = {"emit": "open", "Obj": "web", "AppType": 1, "pos": 1, "AppId": 1, "par": {"URL": '/index.htm' // *以AppEmit运行目录为根目录,非项目目录*, "htmlStr": null, "HttpServer_startUrl": null, "embed_object": {//多个object可以设置embed_object为数组"objName": "SDRdCard", "reg": true    //null 不执行注册   1强制操作 true 未注册则注册  false 卸载注册 (重启AppEmit后,就不能加载dll了), "asAdmin": 0   //1需要管理员权限注册 0不需要 ,win7管理员身份会有提示确认窗口, "dllFile": "/SDRdCard.ocx" //为了安全,限制为AppEmit文件夹,不能注册或者注销其它文件夹下面的ocx,*所以要将SDRdCard.ocx放在AppEmit运行根目录*}}};AE.OpenApp(ReqPar);}// 重新连接function resetPage() {AE.CloseApp({}) // 关闭所有openPage()}onMounted(() => {initAppEmit()})onBeforeUnmount(() => {AE.CloseApp({})})</script><style scoped></style>```

这篇关于chrome中使用AppEmit调用ocx使用文档,vue调用ocx的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912066

相关文章

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J