Option Explicit
On Error Resume Next
Implements IObjectSafety
Dim Device As Long
Dim IsReading As Boolean
Dim MyList As String '鉴定计划中包含的所有准考证号码
Dim MyListed As String '已经读取过的准考证号码
Dim MyCount As Integer '读卡记数
Dim MyText As String '设备读取字符
Dim strlen As Long'控件初始化
Private Sub UserControl_Initialize()Device = 0IsReading = FalseMyTimer.Interval = 50MyCount = 0MyText = ""getMyList ("")
End Sub
'取得控件版本
Public Sub getVersion()MsgBox "光标阅读机控件V 1.0.1"
End Sub
Private Sub cmdRead_Click()If IsReading ThenOMR_StopReadOMR_StopMotorcmdRead.Caption = "阅 读"MyTimer.Enabled = FalseIsReading = FalseElseIf OMR_ReadNoWait() = 0 Then    'OKcmdRead.Caption = "停止阅读"MyTimer.Enabled = TrueIsReading = TrueElsetxtResult.Text = Space(100)strlen = OMR_CRetMess(OMR_GetLastError(), txtResult.Text)MsgBox txtResult.Text, vbCritical, "阅读失败"End IfEnd If
End Sub
'-----------读卡设备断开--------------
Private Sub Command1_Click()cmdInstall.Enabled = TrueCommand1.Enabled = FalsecmdRead.Enabled = FalseOMR_StopReadOMR_StopMotorOMR_ClosetxtResult.Text = txtResult.Text & Chr(13) & Chr(10) & "读卡设备断开!"txtResult.SelStart = Len(txtResult)
End Sub
Private Sub MyTimer_Timer()Dim sResultStr As StringDim lResultNum As LongDim sUserID As String   '准考证号码MyTimer.Enabled = FalseSelect Case OMR_IsReading()Case 0:     '阅读完毕sResultStr = Space(1000)lResultNum = OMR_GetResult(sResultStr, True)MyText = Mid(sResultStr, 1, 300) '取得有效文本If Check1 = Checked ThenOMR_StopMotorcmdRead.Caption = "阅 读"MyTimer.Enabled = FalseIsReading = FalsetxtResult.Text = txtResult.Text & "【" & MyTexttxtResult.Text = txtResult.Text & "】正确答案读取成功!"txtResult.SelStart = Len(txtResult)If (Option1.Value = True) Then '理论回调UserControl.Parent.Script.setRightRecord (MyText)ElseIf (Option2.Value = True) Then '实操回调UserControl.Parent.Script.setRightRecord1 (MyText)ElseIf (Option3.Value = True) Then '外语回调UserControl.Parent.Script.setRightRecord2 (MyText)End IfElsesUserID = Mid(sResultStr, 2, 19) '取得准考证号码txtResult.Text = txtResult.Text & Chr(13) & Chr(10) & "【" & sUserIDtxtResult.Text = txtResult.Text & "】"txtResult.SelStart = Len(txtResult)'----------判断是否是正确的准考证----------If (InStr(sUserID, " ") > 0) ThenOMR_StopMotorcmdRead.Caption = "阅 读"MyTimer.Enabled = FalseIsReading = FalsetxtResult.Text = txtResult.Text & "ERROR 1:准考证填写错误!"txtResult.SelStart = Len(txtResult)UserControl.Parent.Script.myAlert ("ERROR 1:准考证填写错误!")ElseIf (InStr(MyList, sUserID) <= 0) ThenOMR_StopMotorcmdRead.Caption = "阅 读"MyTimer.Enabled = FalseIsReading = FalsetxtResult.Text = txtResult.Text & "ERROR 2:准考证不存在!"txtResult.SelStart = Len(txtResult)UserControl.Parent.Script.myAlert ("ERROR 2:准考证不存在!")ElseIf (InStr(MyListed, sUserID) > 0) ThenOMR_StopMotorcmdRead.Caption = "阅 读"MyTimer.Enabled = FalseIsReading = FalsetxtResult.Text = txtResult.Text & "ERROR 3:准考证号码重复!"txtResult.SelStart = Len(txtResult)UserControl.Parent.Script.myAlert ("ERROR 3:准考证号码重复!")ElseMyListed = MyListed & "," & sUserID '记录已经读取的准考证号码MyCount = MyCount + 1 '累计读取卡片数Label2.Caption = MyCount   '显示读卡数If Left(sResultStr, 1) = "O" ThenIf OMR_ReadNoWait() = 0 Then    'OKcmdRead.Caption = "停止阅读"MyTimer.Enabled = TrueIsReading = True'-------------------回调js--------------If (Option1.Value = True) Then '理论回调UserControl.Parent.Script.setReadText (sResultStr)ElseIf (Option2.Value = True) Then '实操回调UserControl.Parent.Script.setReadText1 (sResultStr)ElseIf (Option3.Value = True) Then '外语回调UserControl.Parent.Script.setReadText2 (sResultStr)End IfElseMsgBox "阅读失败", vbCritical, "警告"End IfElseOMR_StopMotorcmdRead.Caption = "阅 读"MyTimer.Enabled = FalseIsReading = FalsesResultStr = Space(100)strlen = OMR_CRetMess(OMR_GetLastError(), sResultStr)txtResult.Text = sResultStrEnd IfEnd IfEnd IfCase -1:    '阅读失败cmdRead.Caption = "阅 读"MyTimer.Enabled = FalseIsReading = FalsesResultStr = Space(100)strlen = OMR_CRetMess(OMR_GetLastError(), sResultStr)txtResult.Text = sResultStrMsgBox sResultStr, vbCritical, "阅读失败"Case 1:     '正在阅读End Select'-----------------IsReading时启动timer----------------If IsReading ThenMyTimer.Enabled = TrueEnd If
End Sub
'-----------------取得所有的准考证号码-----------------
Public Sub getMyList(str)If Len(str) > 0 ThenMyList = strElseMyList = Text1.TextEnd If
End Sub
'-----------------初始化设备并加载格式文件-------------------
Public Sub cmdInstall_Click()cmdInstall.Enabled = FalseDevice = OMR_Installed(0)Select Case DeviceCase Is = 0:'MsgBox "初始化失败", vbInformationtxtResult.Text = "连接读卡设备失败!"cmdInstall.Enabled = TrueCase Is > 0:'MsgBox "OMR初始化成功", vbInformationtxtResult.Text = "连接读卡设备成功!"OMR_Clear   '需调用多个格式文件时,仅在第一次时调用  OMR_ClearIf OMR_LoadForm("C:\KSCJ200.sht", "") <> 0 ThenMsgBox "不能装载格式文件--C:\KSCJ200.sht", vbCritical, "警告"cmdInstall.Enabled = TrueElse'MsgBox "装载格式文件成功", vbInformation, "提示"txtResult.Text = txtResult.Text & Chr(13) & Chr(10) & "加载格式文件成功!"cmdRead.Enabled = TrueCommand1.Enabled = TruecmdInstall.Enabled = FalseEnd IfCase Else:MsgBox "请设置您的OMR设备类型", vbInformationcmdInstall.Enabled = TrueEnd Select
End Sub
Public Function Script(code As String) As StringDim obj As ObjectSet obj = CreateObject("MSScriptControl.ScriptControl")obj.AllowUI = Trueobj.Language = "JavaScript"Script = obj.Eval(code)
End Function
Private Sub IObjectSafety_GetInterfaceSafetyOptions(ByVal riid As _Long, pdwSupportedOptions As Long, pdwEnabledOptions As Long)Dim Rc      As LongDim rClsId  As udtGUIDDim IID     As StringDim bIID()  As BytepdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER Or _INTERFACESAFE_FOR_UNTRUSTED_DATAIf (riid <> 0) ThenCopyMemory rClsId, ByVal riid, Len(rClsId)bIID = String$(MAX_GUIDLEN, 0)Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)Rc = InStr(1, bIID, vbNullChar) - 1IID = Left$(UCase(bIID), Rc)Select Case IIDCase IID_IDispatchpdwEnabledOptions = IIf(m_fSafeForScripting, _INTERFACESAFE_FOR_UNTRUSTED_CALLER, 0)Exit SubCase IID_IPersistStorage, IID_IPersistStream, _IID_IPersistPropertyBagpdwEnabledOptions = IIf(m_fSafeForInitializing, _INTERFACESAFE_FOR_UNTRUSTED_DATA, 0)Exit SubCase ElseErr.Raise E_NOINTERFACEExit SubEnd SelectEnd If
End Sub
Private Sub IObjectSafety_SetInterfaceSafetyOptions(ByVal riid As _Long, ByVal dwOptionsSetMask As Long, ByVal dwEnabledOptions As Long)Dim Rc          As LongDim rClsId      As udtGUIDDim IID         As StringDim bIID()      As ByteIf (riid <> 0) ThenCopyMemory rClsId, ByVal riid, Len(rClsId)bIID = String$(MAX_GUIDLEN, 0)Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)Rc = InStr(1, bIID, vbNullChar) - 1IID = Left$(UCase(bIID), Rc)Select Case IIDCase IID_IDispatchIf ((dwEnabledOptions And dwOptionsSetMask) <> _INTERFACESAFE_FOR_UNTRUSTED_CALLER) ThenErr.Raise E_FAILExit SubElseIf Not m_fSafeForScripting ThenErr.Raise E_FAILEnd IfExit SubEnd IfCase IID_IPersistStorage, IID_IPersistStream, _IID_IPersistPropertyBagIf ((dwEnabledOptions And dwOptionsSetMask) <> _INTERFACESAFE_FOR_UNTRUSTED_DATA) ThenErr.Raise E_FAILExit SubElseIf Not m_fSafeForInitializing ThenErr.Raise E_FAILEnd IfExit SubEnd IfCase ElseErr.Raise E_NOINTERFACEExit SubEnd SelectEnd If
End Sub

ActiveX(VB6)+JavaScript让IE浏览器与光标阅读器交互相关推荐

  1. RAD PDF于Web浏览器的PDF阅读器

    RAD PDF 基于Web浏览器的PDF阅读器 作为功​​能最完备的基于HTML的PDF查看器,编辑器和ASP.NET的表单填充器,提供了灵活而强大的替代常规PDF解决方案.与Adobe Acroba ...

  2. 《从案例中学习JavaScript》之实现网页版阅读器

    ###序 现在手机上的文本阅读app已经非常丰富,良好的阅读体验与海量的书库常常令我感到无比兴奋. 我想到8年前用一点几寸屏幕的mp3看电子书的情景,顿生一种淡淡的温馨.再久远一些,小的时候,我也经常 ...

  3. 如何在JavaScript中创建RSS阅读器应用程序

    RSS(真正简单的联合组织)是一种在线发布者用来将其内容联合到其他网站和服务的标准化格式. RSS文档 (也称为feed )是一种XML文档 ,其中包含发布者希望分发的内容. 几乎所有在线新闻网站和博 ...

  4. js php 正则差别,JavaScript正则表达式的浏览器的差异

    JavaScript中的正则表达式在不同的浏览器中得到的结果可能会有差异,下面把正则表达式在五大主流浏览器(IE.Firefox.Chrome.Safari.Opera,以当前版本为准)之间的差异整理 ...

  5. 使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头

    HTML5,JavaScript 和现代浏览器这套三驾马车的组合,使得传统的 Web 应用较之过去能实现更多更丰富的同用户交互的功能.摄像头如今已成为智能手机的标配,前端 Web 应用也出现了越来越多 ...

  6. 用Javascript代码实现浏览器菜单命令(以下代码在 Windows XP下的浏览器中调试通过

    每当我们看到别人网页上的打开.打印.前进.另存为.后退.关闭本窗口.禁用右键等实现浏览器命令的链接,而自己苦于不能实现时,是不是感到很遗憾?是不是也想实现?如果能在网页上能实现浏览器的命令,将是多么有 ...

  7. python代替javascript_Pyjamas - 用python代替javascript编写基于浏览器的应用

    如果能用python代替Javascript编写基于浏览器的应用,该有多好啊.但是,Javascript是唯一一种能在浏览器里执行的语言(Flash或Silverlight除外).换个思路,先用Pyt ...

  8. js二维数组传递java,ActiveX获取JavaScript传递的二维数组

    此文参考了http://blog.csdn.net/playstudy/article/details/8259737,在此基础上做了改进 // WebDlg.idl : WebDlg 的 IDL 源 ...

  9. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

最新文章

  1. 解决英文或数字在HTMl网页中不自动换行。
  2. 浅析支付系统的整体架构
  3. 美国会不会禁用python_美国要是禁用Windows系统,该怎么办?国人会不会选择换系统呢?...
  4. 插件开发 之 生成代码
  5. H264--4--H264编码[7]
  6. LVS(DR)+keepalived实现高可用负载均衡
  7. vue列表排序实现中的this问题
  8. 一种用于茶叶病害识别的低阶学习方法
  9. C#使用OpcNetApi.dll和OpcNetApi.Com.dll操作OPC
  10. 补充其他数字类型 (了解)
  11. html中如何把两行合并单元格,css合并两列单元格内容
  12. linux+聊天工具支持qq,linux 下怎样使用qq等聊天工具聊天
  13. MySQL数据库(15):高级数据操作-新增数据
  14. 五点差分法求解偏微分方程(PDE)
  15. Android OS历史版本
  16. console的基础使用
  17. 填坑之路——使用阿里云OSS上传文件
  18. 6.2 基础有大用——《逆袭大学》连载
  19. cs231n笔记总结
  20. 面试官:建造者模式是什么?

热门文章

  1. kissme病毒解决办法(非原创)
  2. MJ对2008年10月6日大盘预测(节后第一天)
  3. 【单调队列优化dp】jzoj4883灵知的太阳信仰 纪中集训提高B组
  4. 极度的坦诚就是无坚不摧
  5. 第一只python小爬虫
  6. 微商大咖不轻易透露的操作秘诀
  7. iOS中调用短信、电话、邮件、Safari浏览器API
  8. 信息安全与技术——(十一)恶意代码检测与防范技术
  9. Android蓝牙调试助手
  10. 【ARC101E】Ribbons on Tree(树形DP,容斥原理)