MSComm32.ocx在IE加载正常,但JS访问运行无效?
在我单位的机器上,MSComm32.ocx在IE加载项可以正常显示,但是Javascript访问运行时却无法访问到串口,也不会报错。程序代码在我家里的机器上运行是正常的,系统环境基本类似,都是装有Macfee杀毒软件,不知是何原因?
曾经作过如下处理,但是问题仍然存在,请各位高手赐教。
1、重新安装MSComm32.ocx.
@rem 注册控件
@copy Mscomm32.ocx %windir%
@copy Mscomm32.ocx %windir%\system32
@Regsvr32 Mscomm32.ocx
regedit /s mscomm32.reg
@regsvr32 actxprxy.dll
@regsvr32 shdocvw.dll
@rem 重新启动
@ECHO OFF & cd/d %temp% & echo [version] > {out}.inf
@(set inf=InstallHinfSection DefaultInstall)
@echo signature=$chicago$ >> {out}.inf
@echo [defaultinstall] >> {out}.inf
@rundll32 setupapi,%inf% 1 %temp%\{out}.inf
2、mscomm32.reg 的内容如下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905]
@ = "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"
3、网页代码如下:
<html>
<head>
<title>JavaScript串口(通过 vb 的 MSCOMM32.OCX 控件)</title>
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
<!--
//重写 mscomm 控件的唯一事件处理代码
function MSComm1_OnComm()
{
var len=0;
//window.alert("happy");
if(MSComm1.CommEvent==1)//如果是发送事件
{
window.alert("ok");//这句正常,说明发送成功了
}
else if(MSComm1.CommEvent==2)//如果是接收事件
{
//window.alert(MSComm1.CommEvent);//! ‘
//window.alert(MSComm1.Input);//
document.form1.txtReceive.value=document.form1.txtReceive.value + MSComm1.Input;
}
return false;
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm>
<!--
// MSComm1控件每遇到 OnComm 事件就调用 MSComm1_OnComm()函数
MSComm1_OnComm()
//-->
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
<!--
//打开端口并发送命令程序
function OpenPort()
{
alert(MSComm1.PortOpen);
if(MSComm1.PortOpen==false)
{
MSComm1.PortOpen=true;
MSComm1.Output="R";//发送命令
}
else
{
window.alert ("已经开始接收数据!");
}
}
-->
</script>
</head>
<OBJECT CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" id=MSComm1 codebase="MSCOMM32.OCX" type="application/x-oleobject"
style="LEFT: 54px; TOP: 14px" >
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="?">
<PARAM NAME="RThreshold" VALUE="1">
<PARAM NAME="RTSEnable" VALUE="1">
<PARAM NAME="SThreshold" VALUE="2">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0">
<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="1">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="Settings" VALUE="9600,N,8,1">
</OBJECT>
<body>
<form name="form1">
<input type="button" name="Submit" value="提交" onClick="OpenPort()">
<input type="text" name="txtReceive" value="">
</form>
</body>
</html>