实际上,你可以先在console或者窗体程序上测试ActiveX控件。例如写var oType = System.Type.GetTypeFromProgID("MyNamespace.MyActiveXClass"); var o = System.Activator.CreateInstance(oType); Debug.Assert(串口是否打开(),"创建MyActiveXClass对象时应该自动打开串口"); var value = oType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[0]); Debug.Assert(串口是否关闭(),"执行MyActiveXClass对象的Close方法时应该自动关闭串口"); 写这样一个测试,单独测试。
http://www.w3school.com.cn/jquery/event_unload.asp
写一个Close方法。别的我不需要多说。
protected internal virtual void OnUnload(EventArgs e)
{
comm.Close();
}
然后在调用这个ActiveX控件的网页中增加代码:
<script language="javascript" type="text/javascript">
window.onunload = ad;
function ad()
{
document.getElementById("btnreturn").click();
}
</script>
<body onunload="ad()">
<object id="ActiveX" classid="clsid:0A080A10-5F36-4781-A592-74FDCCB1F30B" codebase="ActiveX.cab"></object>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnreturn" runat="server" OnClick="btnreturn_Click" Text="返回" />
..........
</body>
但关闭网页后,串口还是没有关闭成功,麻烦楼上的给看一看那些语句有问题。谢谢!
var o = System.Activator.CreateInstance(oType);
Debug.Assert(串口是否打开(),"创建MyActiveXClass对象时应该自动打开串口");
var value = oType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[0]);
Debug.Assert(串口是否关闭(),"执行MyActiveXClass对象的Close方法时应该自动关闭串口");
写这样一个测试,单独测试。