通过网络序列化鼠标光标

时间:2010-06-09 07:16:59

标签: c# serialization

我在C#中使用客户端/服务器应用程序。我的服务器捕获当前的鼠标游标并将它们发送到客户端,以便cleint的Cursor也相应地变化。我可以检测Windows游标并通过binaryformatter序列化它们。它工作正常,但问题是有许多游标无法像mspaint游标一样被检测到所以我必须采取其处理程序并创建光标及其x nad y热点并将它们添加到arraylist并通过网络序列化但是在10之后到15分钟,它有例外 “错误HRESULT E_FAIL已从调用COM Compeonet返回” 和cleint抛出“调用目标抛出的异常”的异常 任何人都可以告诉我出了什么问题或者更好的方法来做这样的事情 有些代码在这里

IntPtr curInfo = GetCurrentCursor();
                Cursor cur;
                Icon ic;
                byte cursor = 0;

                if (curInfo != null && curInfo.ToInt32() != 0)
                {
                    cur = CheckForCusrors(curInfo);
                    try
                    {
                        if (!isLinuxClient)
                        {

                            if (cur == null)
                            {

                                PlatformInvokeUSER32.GetIconInfo(curInfo, out temp);
                                ic = Icon.FromHandle(curInfo);
                                //bitmap = ic.ToBitmap();
                                ArrayList ar = new ArrayList();
                                ar.Add(ic);
                                ar.Add(temp.xHotspot);
                                ar.Add(temp.yHotspot);
                                b.Serialize(stm, ar);
                            }
                            else
                            {
                                ArrayList ar = new ArrayList();
                                ar.Add(cur);
                                b.Serialize(stm, ar);
                             }
                        }
public Cursor CheckForCusrors(IntPtr hCur)
        {
            if (hCur == Cursors.AppStarting.Handle)
                return Cursors.AppStarting;
            else if (hCur == Cursors.Arrow.Handle)
                return Cursors.Arrow;
                          .
                          .
                          .
                else if (hCur == Cursors.PanWest.Handle)
                return Cursors.PanWest;

            return null;
        }

`

1 个答案:

答案 0 :(得分:0)

尝试处理所有创建的句柄,例如:

                        using(ic = Icon.FromHandle(curInfo)) {
                            //bitmap = ic.ToBitmap();
                            ArrayList ar = new ArrayList();
                            ar.Add(ic);
                            ar.Add(temp.xHotspot);
                            ar.Add(temp.yHotspot);
                            b.Serialize(stm, ar);
                        }