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 = 0 IsReading = False MyTimer.Interval = 50 MyCount = 0 MyText = "" getMyList ("") End Sub '取得控件版本 Public Sub getVersion() MsgBox "光标阅读机控件V 1.0.1" End Sub Private Sub cmdRead_Click() If IsReading Then OMR_StopRead OMR_StopMotor cmdRead.Caption = "阅 读" MyTimer.Enabled = False IsReading = False Else If OMR_ReadNoWait() = 0 Then 'OK cmdRead.Caption = "停止阅读" MyTimer.Enabled = True IsReading = True Else txtResult.Text = Space(100) strlen = OMR_CRetMess(OMR_GetLastError(), txtResult.Text) MsgBox txtResult.Text, vbCritical, "阅读失败" End If End If End Sub '-----------读卡设备断开-------------- Private Sub Command1_Click() cmdInstall.Enabled = True Command1.Enabled = False cmdRead.Enabled = False OMR_StopRead OMR_StopMotor OMR_Close txtResult.Text = txtResult.Text & Chr(13) & Chr(10) & "读卡设备断开!" txtResult.SelStart = Len(txtResult) End Sub Private Sub MyTimer_Timer() Dim sResultStr As String Dim lResultNum As Long Dim sUserID As String '准考证号码 MyTimer.Enabled = False Select Case OMR_IsReading() Case 0: '阅读完毕 sResultStr = Space(1000) lResultNum = OMR_GetResult(sResultStr, True) MyText = Mid(sResultStr, 1, 300) '取得有效文本 If Check1 = Checked Then OMR_StopMotor cmdRead.Caption = "阅 读" MyTimer.Enabled = False IsReading = False txtResult.Text = txtResult.Text & "【" & MyText txtResult.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 If Else sUserID = Mid(sResultStr, 2, 19) '取得准考证号码 txtResult.Text = txtResult.Text & Chr(13) & Chr(10) & "【" & sUserID txtResult.Text = txtResult.Text & "】" txtResult.SelStart = Len(txtResult) '----------判断是否是正确的准考证---------- If (InStr(sUserID, " ") > 0) Then OMR_StopMotor cmdRead.Caption = "阅 读" MyTimer.Enabled = False IsReading = False txtResult.Text = txtResult.Text & "ERROR 1:准考证填写错误!" txtResult.SelStart = Len(txtResult) UserControl.Parent.Script.myAlert ("ERROR 1:准考证填写错误!") ElseIf (InStr(MyList, sUserID) <= 0) Then OMR_StopMotor cmdRead.Caption = "阅 读" MyTimer.Enabled = False IsReading = False txtResult.Text = txtResult.Text & "ERROR 2:准考证不存在!" txtResult.SelStart = Len(txtResult) UserControl.Parent.Script.myAlert ("ERROR 2:准考证不存在!") ElseIf (InStr(MyListed, sUserID) > 0) Then OMR_StopMotor cmdRead.Caption = "阅 读" MyTimer.Enabled = False IsReading = False txtResult.Text = txtResult.Text & "ERROR 3:准考证号码重复!" txtResult.SelStart = Len(txtResult) UserControl.Parent.Script.myAlert ("ERROR 3:准考证号码重复!") Else MyListed = MyListed & "," & sUserID '记录已经读取的准考证号码 MyCount = MyCount + 1 '累计读取卡片数 Label2.Caption = MyCount '显示读卡数 If Left(sResultStr, 1) = "O" Then If OMR_ReadNoWait() = 0 Then 'OK cmdRead.Caption = "停止阅读" MyTimer.Enabled = True IsReading = 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 If Else MsgBox "阅读失败", vbCritical, "警告" End If Else OMR_StopMotor cmdRead.Caption = "阅 读" MyTimer.Enabled = False IsReading = False sResultStr = Space(100) strlen = OMR_CRetMess(OMR_GetLastError(), sResultStr) txtResult.Text = sResultStr End If End If End If Case -1: '阅读失败 cmdRead.Caption = "阅 读" MyTimer.Enabled = False IsReading = False sResultStr = Space(100) strlen = OMR_CRetMess(OMR_GetLastError(), sResultStr) txtResult.Text = sResultStr MsgBox sResultStr, vbCritical, "阅读失败" Case 1: '正在阅读 End Select '-----------------IsReading时启动timer---------------- If IsReading Then MyTimer.Enabled = True End If End Sub '-----------------取得所有的准考证号码----------------- Public Sub getMyList(str) If Len(str) > 0 Then MyList = str Else MyList = Text1.Text End If End Sub '-----------------初始化设备并加载格式文件------------------- Public Sub cmdInstall_Click() cmdInstall.Enabled = False Device = OMR_Installed(0) Select Case Device Case Is = 0: 'MsgBox "初始化失败", vbInformation txtResult.Text = "连接读卡设备失败!" cmdInstall.Enabled = True Case Is > 0: 'MsgBox "OMR初始化成功", vbInformation txtResult.Text = "连接读卡设备成功!" OMR_Clear '需调用多个格式文件时,仅在第一次时调用 OMR_Clear If OMR_LoadForm("C:\KSCJ200.sht", "") <> 0 Then MsgBox "不能装载格式文件--C:\KSCJ200.sht", vbCritical, "警告" cmdInstall.Enabled = True Else 'MsgBox "装载格式文件成功", vbInformation, "提示" txtResult.Text = txtResult.Text & Chr(13) & Chr(10) & "加载格式文件成功!" cmdRead.Enabled = True Command1.Enabled = True cmdInstall.Enabled = False End If Case Else: MsgBox "请设置您的OMR设备类型", vbInformation cmdInstall.Enabled = True End Select End Sub Public Function Script(code As String) As String Dim obj As Object Set obj = CreateObject("MSScriptControl.ScriptControl") obj.AllowUI = True obj.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 Long Dim rClsId As udtGUID Dim IID As String Dim bIID() As Byte pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER Or _ INTERFACESAFE_FOR_UNTRUSTED_DATA If (riid <> 0) Then CopyMemory rClsId, ByVal riid, Len(rClsId) bIID = String$(MAX_GUIDLEN, 0) Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN) Rc = InStr(1, bIID, vbNullChar) - 1 IID = Left$(UCase(bIID), Rc) Select Case IID Case IID_IDispatch pdwEnabledOptions = IIf(m_fSafeForScripting, _ INTERFACESAFE_FOR_UNTRUSTED_CALLER, 0) Exit Sub Case IID_IPersistStorage, IID_IPersistStream, _ IID_IPersistPropertyBag pdwEnabledOptions = IIf(m_fSafeForInitializing, _ INTERFACESAFE_FOR_UNTRUSTED_DATA, 0) Exit Sub Case Else Err.Raise E_NOINTERFACE Exit Sub End Select End If End Sub Private Sub IObjectSafety_SetInterfaceSafetyOptions(ByVal riid As _ Long, ByVal dwOptionsSetMask As Long, ByVal dwEnabledOptions As Long) Dim Rc As Long Dim rClsId As udtGUID Dim IID As String Dim bIID() As Byte If (riid <> 0) Then CopyMemory rClsId, ByVal riid, Len(rClsId) bIID = String$(MAX_GUIDLEN, 0) Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN) Rc = InStr(1, bIID, vbNullChar) - 1 IID = Left$(UCase(bIID), Rc) Select Case IID Case IID_IDispatch If ((dwEnabledOptions And dwOptionsSetMask) <> _ INTERFACESAFE_FOR_UNTRUSTED_CALLER) Then Err.Raise E_FAIL Exit Sub Else If Not m_fSafeForScripting Then Err.Raise E_FAIL End If Exit Sub End If Case IID_IPersistStorage, IID_IPersistStream, _ IID_IPersistPropertyBag If ((dwEnabledOptions And dwOptionsSetMask) <> _ INTERFACESAFE_FOR_UNTRUSTED_DATA) Then Err.Raise E_FAIL Exit Sub Else If Not m_fSafeForInitializing Then Err.Raise E_FAIL End If Exit Sub End If Case Else Err.Raise E_NOINTERFACE Exit Sub End Select End If End Sub
相关推荐
标题“VB6+IE activex_截全屏源码”涉及到的是使用Visual Basic 6 (VB6) 和 Internet Explorer ActiveX 控件来实现全屏截图的功能。ActiveX 是微软开发的一种技术,允许开发者创建可以在不同应用程序之间共享的组件...
《大量VB6+SQLSERVER实例》是一份宝贵的资源集合,主要涵盖了使用Visual Basic 6(VB6)与Microsoft SQL Server数据库进行开发的各种实践案例。这些实例对于深入理解VB6与SQL Server的集成应用,以及提升在实际项目...
标题中的“vb6+Sybase+Oracle”表明这是一个关于使用Visual Basic 6(VB6)编程语言与Sybase和Oracle数据库交互的项目。这个项目可能涉及到数据库连接、数据查询、数据更新以及用户界面的设计等核心内容。让我们深入...
在IT领域,ActiveX与JavaScript(JS)交互是一种在客户端Web应用中常见技术,尤其在老版本的Internet Explorer浏览器中广泛使用。ActiveX是微软推出的一种技术,它允许开发人员创建能够与网页交互的控件,而...
### ActiveX组件与JavaScript交互详解 #### 一、概述 ActiveX组件是一种可以在网页或桌面应用程序中运行的小型可执行程序,它支持多种语言编写,包括C++等。JavaScript是广泛应用于网页开发的一种脚本语言。本文将...
3. **跨内核支持**:插件的目的是实现跨内核的兼容性,这通常涉及到对ActiveX对象的重新实现或者在非IE浏览器中创建一个代理对象,使得调用ActiveX控件的JavaScript代码能在非IE内核环境中运行。 4. **安全问题**:...
在VB6(Visual Basic 6)中嵌入谷歌浏览器,主要涉及到的是ActiveX技术的应用,以及与WebBrowser控件的交互。以下将详细介绍这个过程,包括相关知识点和步骤。 首先,VB6是一个经典的Windows应用程序开发环境,它...
本文将深入探讨如何利用ActiveX在IE浏览器中获取PC的硬件信息。 首先,ActiveX控件可以访问本地文件系统。通过调用特定的API函数,ActiveX可以读取、写入或管理用户计算机上的文件,这在需要与本地数据交互的应用...
标题中的“IE浏览器activex修改及添加可信任站点BAT”指的是一个使用批处理(BAT)文件来管理和配置Internet Explorer(IE)浏览器的方案,主要涉及ActiveX控件的管理以及安全设置的调整。ActiveX是微软开发的一种...
总之,"IE浏览器控制ActiveX组件"是一种过时但仍然存在于某些特定场景的技术,它允许网页与IE浏览器更深度的交互,但同时也带来了安全风险。随着Web技术的发展,现代Web开发已经倾向于使用更安全、更标准化的解决...
该程序是基于VB6开发的,使用了VsflexGrid控件来实现数据的显示、编辑、保存、查询和打印功能,涵盖了VB与ADO(ActiveX Data Objects)的数据库交互技术。VsflexGrid是一款灵活的数据网格控件,允许用户在界面上以...
由于ActiveX控件主要针对Internet Explorer设计,因此在非IE浏览器中可能无法正常工作。此外,现代浏览器对插件的支持正在逐渐减少,转而支持更安全的HTML5技术。 为了提高安全性,可以通过设置控件的安全级别来...
本示例“谷歌浏览器js打开IE浏览器.rar”提供了一个解决方案,它允许用户在谷歌浏览器(Chrome)中通过JavaScript代码启动IE浏览器。这主要适用于那些需要在现代浏览器环境下触发旧版IE兼容模式的场景。 JavaScript...
VB6的ActiveX EXE是为了解决跨平台和跨语言通信的问题,它创建了一个可执行文件,可以作为其他应用程序的组件进行交互。 在VB.NET中调用VB6的ActiveX EXE,主要依赖于COM(Component Object Model)互操作性。COM是...
在Windows XP和Windows 2000操作系统上,VB可以很容易地与IE浏览器交互,因为这两个系统都内置了对ActiveX技术的支持。ActiveX是微软开发的一种组件对象模型,允许不同应用程序之间共享功能,其中包括与IE浏览器的...
标题“vb6实现安全多线程的ActiveX组件”揭示了这个压缩包包含的是一个针对Visual Basic 6(VB6)开发的ActiveX组件,该组件特别设计用于在多线程环境中确保程序的安全运行。ActiveX是微软的一种技术,允许开发者...
9. **安全与兼容性**:由于IE浏览器的市场份额和历史遗留问题,源码中会涉及很多兼容性和安全性的考虑,如ActiveX控件的管理、跨域策略等。 10. **调试与测试**:源码中通常包含调试工具和测试框架,以便于开发者...
ADO是微软的数据库访问技术,它为VB6提供了一种简单且高效的方式与各种数据库进行交互。ADO模型包括Recordset、Connection、Command等对象,允许开发者执行SQL查询、操作数据、处理结果集等。在这个进销存系统中,...
本资源“大量VB6+SQL 数据库实例源码”提供了一系列完整的VB源码实例,帮助初学者和编程新手掌握如何在VB6中与SQL数据库进行交互。 1. **VB6与SQL连接基础** - ADO(ActiveX Data Objects)是VB6中常用的数据库...
2. **数据连接与操作**:VB.NET通过ADO.NET(ActiveX Data Objects .NET)库与Access数据库进行交互。这涉及创建数据库连接字符串,打开和关闭连接,执行SQL查询(如SELECT, INSERT, UPDATE, DELETE)来读写数据。 ...