2010-06-09 3 views
0

Je travaille sur une application client/serveur en C#. Mon serveur Capture les curseurs de souris actuels et envoie ceux-ci au client pour que le curseur de la cléigne se corrige aussi en conséquence. Je peux détecter les curseurs de fenêtres et les sérialiser au-dessus de binaryformatter. cela fonctionne bien mais le problème est qu'il y a beaucoup de curseurs qui ne peuvent pas être détectés comme les curseurs mspaint donc je dois prendre son gestionnaire et créer le curseur et ses x nad y hotspots et les ajouter dans un arraylist et sérialiser sur le réseau "Erreur HRESULT E_FAIL a été renvoyé à partir d'un appel à un Compeonet COM" et cléint lève l'exception de "Exception lancée par la cible d'invocation" Est-ce que quelqu'un peut me dire ce qui ne va pas? faire comme ce Une partie du code est iciSérialisation des curseurs de la souris sur le réseau

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; 
     } 

`

Répondre

0

Essayez de DIS pose toutes les poignées que vous avez créées, par exemple:

     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); 
         } 
Questions connexes