http://www.csdn.net/cnshare/soft/1/1703.shtm  楼主可以参考一下。

解决方案 »

  1.   

    一个鼠标类
    namespace ClassLibrary.Hardware
    {
     // 0.原创 Using C# and Win32API ( 最近我把所有的Win32API看了1遍 很是过瘾 )
     
     // 1.所有的方法都没有错误处理 // 2.觉的有用的朋友 给我加点分 我好继续
     
     // 3.斧头 y 狗狗 你们到哪里去了? 想死我了!
     
     public class Mouse
     {
      internal const byte SM_MOUSEPRESENT = 19;
      internal const byte SM_CMOUSEBUTTONS = 43;
      internal const byte SM_MOUSEWHEELPRESENT = 75;  internal struct POINTAPI
      {
       internal int x;
       internal int y;
      }  internal struct RECT
      {
       internal int left ;
       internal int top ;
       internal int right ;
       internal int bottom ;
      }  [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SwapMouseButton")]
      internal extern static int SwapMouseButton ( int bSwap );  [System.Runtime.InteropServices.DllImport("user32" , EntryPoint="ClipCursor")]
      internal extern static int ClipCursor(ref RECT lpRect);  [System.Runtime.InteropServices.DllImport( "user32.dll" , EntryPoint="GetCursorPos" )]
      internal extern static int GetCursorPos( ref POINTAPI lpPoint );  [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint="ShowCursor")]
      internal extern static bool ShowCursor ( bool bShow ) ;
     
      [System.Runtime.InteropServices.DllImport( "user32.dll" , EntryPoint = "EnableWindow" )]
      internal extern static int EnableWindow( int hwnd , int fEnable );  [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetWindowRect")]  
      internal extern static int GetWindowRect( int hwnd , ref RECT lpRect ) ;  [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SetCursorPos")]  
      internal extern static int SetCursorPos ( int x , int y ) ;  [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetSystemMetrics")]
      internal extern static int GetSystemMetrics( int nIndex );  [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SetDoubleClickTime")]
      internal extern static int SetDoubleClickTime ( int wCount );  [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetDoubleClickTime")]
      internal extern static int GetDoubleClickTime() ;  [System.Runtime.InteropServices.DllImport("kernel32.DLL", EntryPoint="Sleep")]
      internal extern static void Sleep ( int dwMilliseconds ) ;  //得到鼠标相对与全屏的坐标,不是相对与你的Form的,且与你的分辨率有关系  public static int FullScreenPosition_X
      {
       get 
       {
        POINTAPI _POINTAPI = new POINTAPI();    GetCursorPos ( ref _POINTAPI );
         
        return _POINTAPI.x;
       }
      }
       
      public static int FullScreenPosition_Y
      {
       get 
       {
        POINTAPI _POINTAPI = new POINTAPI();    GetCursorPos ( ref _POINTAPI );
         
        return _POINTAPI.y;
       }
      }  // 隐藏 显示 鼠标  public static void Hide()
      {
       ShowCursor( false ) ;
      }
      
      public static void Show()
      {
       ShowCursor( true ) ;
      }  // 将鼠标锁定在你的Form里 不过你得将你的Form先锁了,Form Resize 就失效了  public static void Lock( System.Windows.Forms.Form ObjectForm )
      {
       RECT _FormRect = new RECT ();
       
       GetWindowRect( ObjectForm.Handle.ToInt32() , ref _FormRect );
       
       ClipCursor( ref _FormRect );
      }
       
      public static void UnLock()
      {
       RECT _ScreenRect = new RECT ();
       
       _ScreenRect.top = 0;
       _ScreenRect.left = 0;
       _ScreenRect.bottom = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Bottom;
       _ScreenRect.right = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right;
        
       ClipCursor( ref _ScreenRect );
      }  // 鼠标失效,不过失效的好像不只是鼠标,小心哦  public static void Disable( System.Windows.Forms.Form ObjectForm )
      {
       EnableWindow( ObjectForm.Handle.ToInt32() , 0 ) ;
      }
     
      public static void Enable( System.Windows.Forms.Form ObjectForm )
      {
       EnableWindow( ObjectForm.Handle.ToInt32() , 1 ) ;
      }  // 鼠标自己移动 很想动画哦 参数是2个控件的handle
      // 看这个方法前,先用凉水擦把脸 反正我写的时候 头晕  public static void Move ( int From_Handle_ToInt32 , int To_Handle_ToInt32 )
      {
       RECT rectFrom = new RECT () ;
       RECT rectTo = new RECT () ;
         
       int i ;
       
       GetWindowRect( From_Handle_ToInt32 , ref rectFrom ) ;
       GetWindowRect( To_Handle_ToInt32 , ref rectTo ) ;   if ( ( rectFrom.left + rectFrom.right ) / 2 - ( rectTo.left + rectTo.right ) / 2 > 0 )
       {
        for ( i = ( rectFrom.left + rectFrom.right ) / 2 ; i >= ( rectTo.left + rectTo.right ) / 2 ; i-- )
        {
         SetCursorPos ( i , ( rectFrom.top + rectFrom.bottom ) / 2) ;
         Sleep ( 1 ) ;
        }
       }
       else 
       {
        for ( i = ( rectFrom.left + rectFrom.right ) / 2 ; i <= ( rectTo.left + rectTo.right ) / 2 ; i++ )
        {
         SetCursorPos ( i , ( rectFrom.top + rectFrom.bottom ) / 2) ;
         Sleep ( 1 ) ;
        }
       }   if ( ( rectFrom.top + rectFrom.bottom ) / 2 - ( rectTo.top + rectTo.bottom ) / 2 > 0 )
       {
        for ( i = ( rectFrom.top + rectFrom.bottom ) / 2 ; i >= ( rectTo.top + rectTo.bottom ) / 2 ; i-- )
        {
         SetCursorPos ( ( rectTo.left + rectTo.right ) / 2 , i ) ;
         Sleep ( 1 ) ;
        }
       }
       else
       {
        for ( i = ( rectFrom.top + rectFrom.bottom ) / 2 ; i <= ( rectTo.top + rectTo.bottom ) / 2 ; i++ )
        {
         SetCursorPos ( ( rectTo.left + rectTo.right ) / 2 , i ) ;
         Sleep ( 1 ) ;
        }
       }
      }
       
      // 得到你的鼠标类型
     
      public static string Type
      {
       get
       {
        if ( GetSystemMetrics( SM_MOUSEPRESENT ) == 0 )
        {
         return "本计算机尚未安装鼠标" ;
        }
        else
        {
         if ( GetSystemMetrics( SM_MOUSEWHEELPRESENT ) != 0 )
         {
          return GetSystemMetrics( SM_CMOUSEBUTTONS ) + "键滚轮鼠标" ;
         }
         else
         {
          return GetSystemMetrics( SM_CMOUSEBUTTONS ) + "键鼠标" ;
         }
        } 
       } 
      }  // 设置鼠标双击时间
      
      public static void DoubleClickTime_Set( int MouseDoubleClickTime )
      {
       SetDoubleClickTime( MouseDoubleClickTime );
      }
      
      public static string DoubleClickTime_Get()
      {
       return GetDoubleClickTime().ToString() ;
      }  // 设置鼠标默认主键 我是没有见过谁左手用鼠标  public static void DefaultRightButton()
      {
       SwapMouseButton ( 1 ) ;
      }
      
      public static void DefaultLeftButton()
      {
       SwapMouseButton ( 0 ) ;
      }
     }
    }