js 代码:<input type="button" value="发送消息" onclick="Send();" />
<input type="text" id="txtData" />
    <object id="GpsActiveX" classid="clsid:31B11F5C-5B01-4A8C-8119-3710CB1C8ECC">
    </object>
    <script type="text/javascript" language="javascript">
        GpsActiveX.Init(window, '192.168.16.14', '8000');
        function ClientTest(t) {
            alert(t);
        }
        function Send() {
            GpsActiveX.SendToServer(document.getElementById("txtData").value);
        }
 </script>
 
 <script language="javascript" event="OnGps(vid,gps)" for="GpsActiveX">
     alert(vid);
 </script>比如这个 OnGps 怎么在 OCX 抛出来给 JS 获取以上可以调用 OXC 里面的方法,就是事件,在 OCX 里面不知道怎么写,才能让 event 捕获。 c#代码:    [Guid("31B11F5C-5B01-4A8C-8119-3710CB1C8ECC")]
    public partial class WebGpsServer : UserControl, IObjectSafety
    {
        mshtml.HTMLWindow2Class html;//执行客户端脚本        string ip = "127.0.0.1";
        int port = 8000;        private IPAddress serverIP;
        private IPEndPoint serverFullAddr;
        private Socket sock;        public WebGpsServer()
        {
            InitializeComponent();
        }        #region IObjectSafety 成员        //............         #endregionpublic void Init(object obj, string ip, int port)
        {
            html = (mshtml.HTMLWindow2Class)obj;             this.ip = ip;
            this.port = port;
            Start();
        }private void Start()
        {
            serverIP = IPAddress.Parse(ip);
            serverFullAddr = new IPEndPoint(serverIP, port);
            sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock.Connect(serverFullAddr);
            Thread t = new Thread(new ThreadStart(ReceiveMsg));
            t.Name = "Receive Message";
            t.IsBackground = true;
            t.Start();
            byte[] byteSend = System.Text.Encoding.GetEncoding("gb2312").GetBytes("新成员:" + Dns.GetHostName() + "\n");
            try
            {
                this.sock.Send(byteSend);
            }
            catch
            {
                html.execScript("ClientTest('Error');", "javascript");
            }
            html.execScript("ClientTest('连接成功!');", "javascript");//html.execScript这个是执行客户端的 JS 方法
        }private void ReceiveMsg()
        {
            try
            {
                while (true)
                {
                    byte[] byteRec = new byte[100];
                    this.sock.Receive(byteRec);
                    string strRec = System.Text.Encoding.GetEncoding("gb2312").GetString(byteRec);
                    if (this.label1.InvokeRequired)
                    {
                        this.label1.Invoke(new EventHandler(ChangeRtb), new object[] { strRec, EventArgs.Empty });
                    }                    // 这里不能使用 html.execScript 这种方法,所以想修改成捕获事件                    //异常如下:无法将类型为 mshtml.HTMLWindow2Class 的 COM 对象强制转换为接口类型 mshtml.DispHTMLWindow2                    //html.execScript("ClientTest('" + strRec + "');", "javascript");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Receive Message Error" + ex.Message);
            }
        }private void ChangeRtb(object obj, EventArgs e)
        {
            string s = System.Convert.ToString(obj);
            label1.Text  = s;// 这里不能使用 html.execScript 这种方法,所以想修改成捕获事件//异常信息如下:由于出现错误 80080101 而导致此项操作无法完成
            //html.execScript("ClientTest('" + s + "');", "javascript"); 
        }//发送消息给服务器public void SendToServer(string datas)
        {
            byte[] byteSend = System.Text.Encoding.GetEncoding("gb2312").GetBytes(Dns.GetHostName() + ": " + datas + "\n");
            this.sock.Send(byteSend);
        }}