VB调用的OCX控件返回标准事件的读取方式

问题描述

我在开发一个软件电话的客户端,需要调用供应商提供的OCX空件.但当我尝试处理其提供的标准事时,在VB.net内却遇到困难.其提供的指引为:------------------------------------------------3.8.7错误事件(OnError)中文错误事件原型voidOnError(longErrorCode,BSTRErrorStr);说明发生错误时触发;触发TSERVER重连错误事件后软电话会重新登录。参数ErrorCode错误码见错误码说明ErrorStr错误描述------------------------------------------------我尝试过使用JS脚本调用此事件,可以正确的获取ErrorCode<OBJECTid="objSp"style="Z-INDEX:101;LEFT:24px;WIDTH:700px;HEIGHT:145px"classid=clsid:5E57CDEB-8FBB-4AB5-9050-3A307E5BCFBD></OBJECT>sp=document.getElementById("objSp");sp.attachEvent('OnError',Error);functionError(ErrorCode,ErrorStr){alert(ErrorCode);if(ErrorCode>300&&ErrorCode<400){linkvar=1;alert(linkvar);alert('网络连接错误,请重新登陆,错误码:'+ErrorCode);}else{linkvar=0;}}但当我在VB.NET内进行编写的时候,却遇到问题PrivateFunctionsp_OnError(ByValErrorCodeAsObject,ByValErrorStrAsAxSOFTPHONELib._DSoftPhoneEvents_OnErrorEvent)Handlessp.OnErrorIf(ErrorCode>300AndErrorCode<400)Thenlinkvar=1MsgBox(linkvar)MsgBox("网络连接错误,请重新登陆,错误码:"+ErrorCode)Elselinkvar=0EndIfReturn0EndFunction错误提示为找不到ErrorCode与Integer转型的方法.请问该如何作呢?

解决方案

解决方案二:
系统反馈人信息为:用户代码未处理System.InvalidCastExceptionMessage=没有为类型“AxSoftPhone”和类型“Integer”定义运算符“>”。Source=Microsoft.VisualBasicStackTrace:在Microsoft.VisualBasic.CompilerServices.Operators.InvokeObjectUserDefinedOperator(UserDefinedOperatorOp,Object[]Arguments)在Microsoft.VisualBasic.CompilerServices.Operators.InvokeUserDefinedOperator(UserDefinedOperatorOp,Object[]Arguments)在Microsoft.VisualBasic.CompilerServices.Operators.CompareObjectGreater(ObjectLeft,ObjectRight,BooleanTextCompare)在FIS软电话系统.FormMain.sp_OnError(ObjectErrorCode,_DSoftPhoneEvents_OnErrorEventErrorStr)位置E:FIS-SoftPhoneForm-Main.vb:行号124在FIS软电话系统.FormMain._Lambda$__3(Objecta0,_DSoftPhoneEvents_OnErrorEventa1)位置E:FIS-SoftPhoneForm-Main.Designer.vb:行号0在AxSOFTPHONELib.AxSoftPhone.RaiseOnOnError(Objectsender,_DSoftPhoneEvents_OnErrorEvente)在AxSOFTPHONELib.AxSoftPhoneEventMulticaster.OnError(Int32errorCode,StringerrorStr)InnerException:
解决方案三:
ErrorCodeAsObject是對象跟300與400當然不能比較。ErrorStr參數可能會有你要的吧使用ErrorStr.
解决方案四:
可以详细说明吗?当我写成PrivateFunctionsp_OnError(ByValErrorCodelong,ByValErrorStrAsString)Handlessp.OnError系统也是会提示不能比较.但我想不明白为什么JS内的代码却可以调用event的返回参数.
解决方案五:
JS是腳本,VB並不是PrivateFunctionsp_OnError(ByValErrorCodeAsObject,ByValErrorStrAsAxSOFTPHONELib._DSoftPhoneEvents_OnErrorEvent)Handlessp.OnErrorErrorCode是ObjectErrorStr才是事件引數

时间: 2024-11-10 07:42:54

VB调用的OCX控件返回标准事件的读取方式的相关文章

mscomm32 ocx-windows7下调用MSCOMM32.OCX控件失败

问题描述 windows7下调用MSCOMM32.OCX控件失败 目的: 在JSP页面中调用MSCOMM32.OCX控件处理串口打印,打印机用的是EPSON TM-T81小票打印机,在XP中通过IE访问调试通过,可以正常打印,在win7下打印失败,现希望在win7下可以正常打印 已处理的问题 MSCOMM32.OCX已拷贝至C:WindowsSysWOW64下 已在C:WindowsSysWOW64下执行 regsvr32 MSCOMM32.OCX注册成功 已在注册表注入如下内容 [-HKEY_

C# 调用C++ OCX控件,结构体指针 在线等搭救

问题描述 ocx控件的结构体typedefstruct{charszNumber[16];charszClass[16];charszKana[16];charszArea[16];floatfAccNumber;floatfAccClass;floatfAccKana;floatfAccArea;floatfAccTotal;intiPlateSize;intiPlateColor;intiThreshold;intiVertexX[4];intiVertexY[4];intiAlgorith

关于Winform中调用OCX控件中事件问题

问题描述 目前在Winform中使用第三方C++编写的OCX控件(ActiveX),1.已经注册组件(用命令行:Regsvr32/s[盘符:][路径]组件.ocx)2.添加引用,并能正常拖动到Form窗体上.3.using命名空间现在想通过OCX控件中的事件(如:PSMessageEvent)来得到相应的返回值,该如何做? 解决方案 解决方案二:什么叫返回值,这取决于人家的事件是否允许带返回参数解决方案三:下面是控件提供的SDK文档中的事件原型:voidPSMessage(doubledLati

如何在class中调用ocx控件?

问题描述 我现在需要在class中调用一个ocx控件,结果运行时,总是弹出"灾难性故障(ExceptionfromHRESULT:0x8000FFFF(E_UNEXPECTED))".而在winform程序下,就不会出现此类错误,请问该如何修改? 解决方案 解决方案二:up

JS实现OCX控件的事件响应示例

 JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自身肯定是可以实现的,JS提供的这种机制使JS也可以完成OCX控件事件的响应. 简单举例如下: 首先在OCX控件中添加自定义事件(预定义事件同理,如鼠标点击等,没亲自试,感觉原理应该是一样的), 事件应该是属于窗口的,所以在Ctrl类上单击右键,Add->Add Event,如下图: 在打开的对话框中输入事件名称,例如OnChang

JS实现OCX控件的事件响应示例_javascript技巧

JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自身肯定是可以实现的,JS提供的这种机制使JS也可以完成OCX控件事件的响应. 简单举例如下: 首先在OCX控件中添加自定义事件(预定义事件同理,如鼠标点击等,没亲自试,感觉原理应该是一样的), 事件应该是属于窗口的,所以在Ctrl类上单击右键,Add->Add Event,如下图: 在打开的对话框中输入事件名称,例如OnChange

javaweb-网页调用ocx控件打开或创建注册表的权限问题

问题描述 网页调用ocx控件打开或创建注册表的权限问题 在某几个win7 64位笔记本上, 通过服务器页面调用ocx读取注册表会提示无权限的现象,但使用本地html文件调用没问题, 不知是何原因,求大侠给点提示 解决方案 又试了一下,使用世界之窗浏览器可以正常使用了.但不明白为何? 解决方案二: ie本地file协议浏览(intranet)和http访问(internet)使用的是不同的安全设置,你按照本地的intranet安全配置internet安全设置 不过你这种需求没什么意义,只能针对特殊

ocx控件调用:js调用ocx控件

js调用ocx控件:a.注册ocx控件, regsvr32 %控件路径%\名称.ocxb.如果注册成功,在注册表里可以查看到已注册的控件名称.c.打开注册表编辑器,在菜单栏有个编辑然后选择查找输入控件名称,可以找到该控件,并且分配一个OBJECT CLASSID,也可以在一些编辑器中找到该控件OBJECT,例如EditPlus.选择OBJECT(最下面一行菜单倒数第五个),点击该控件名称,生成一段代码这时可以用OBJECT 的 ID 值(TestCTIX)去调用 ocx 控件里的方法. 本文链接

在64位系统中ocx控件调用问题

问题描述 在64位系统中ocx控件调用问题 在64位系统中已注册32位程序的ocx控件,为什么32位程序无法显示ocx控件? 解决方案 和64位没有什么关系,你的程序必须是32bit的才可以调用32bit的控件. 如果你用的是C#,你需要强制将程序集限定为32bit 参考:http://blog.csdn.net/blueboy2000/article/details/4242369 解决方案二: jsp调用ocx控件 解决方案三: 你是不是用的的32bit版本的regsvr32注册. 然后就是