问题描述
我在开发一个软件电话的客户端,需要调用供应商提供的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才是事件引數