鼠标操作类

using System;
namespace Edobnet.Net.Lib
{
     /// <summary>
     /// Mouse 的摘要说明。
     /// </summary>
     public class Mouse
     {
         public Mouse()
         {
              //
              // TODO: 在此处添加构造函数逻辑
              //
         }
         internal const byte SM_MOUSEPRESENT = 19;
        internal const byte SM_CMOUSEBUTTONS = 43; 
        internal const byte SM_MOUSEWHEELPRESENT = 75; 
         public const int MOUSEEVENTF_LEFTDOWN = 0x2;
         public const int MOUSEEVENTF_LEFTUP = 0x4;
         public const int MOUSEEVENTF_MIDDLEDOWN = 0x20;
         public const int MOUSEEVENTF_MIDDLEUP = 0x40;
         public const int MOUSEEVENTF_MOVE = 0x1;
         public const int MOUSEEVENTF_RIGHTDOWN = 0x8;
         public const int MOUSEEVENTF_RIGHTUP = 0x10;
        public struct POINTAPI 
        { 
        public int x; 
        public int y; 
        } 
        public struct RECT 
        { 
        public int left ; 
        public int top ; 
        public int right ; 
        public int bottom ; 
        } 
        [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SwapMouseButton")] 
        public extern static int SwapMouseButton ( int bSwap ); 
        [System.Runtime.InteropServices.DllImport("user32" , EntryPoint="ClipCursor")] 
        public extern static int ClipCursor(ref RECT lpRect); 
        [System.Runtime.InteropServices.DllImport( "user32.dll" , EntryPoint="GetCursorPos" )] 
        public extern static int GetCursorPos( ref POINTAPI lpPoint ); 
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint="ShowCursor")] 
        public extern static bool ShowCursor ( bool bShow ) ; 
        [System.Runtime.InteropServices.DllImport( "user32.dll" , EntryPoint = "EnableWindow" )] 
        public extern static int EnableWindow( int hwnd , int fEnable ); 
        [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetWindowRect")]  
        public extern static int GetWindowRect( int hwnd , ref RECT lpRect ) ; 
        [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SetCursorPos")]  
        public extern static int SetCursorPos ( int x , int y ) ; 
        [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetSystemMetrics")] 
        public extern static int GetSystemMetrics( int nIndex ); 
        [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SetDoubleClickTime")] 
        public extern static int SetDoubleClickTime ( int wCount ); 
        [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetDoubleClickTime")] 
        public extern static int GetDoubleClickTime() ; 
        [System.Runtime.InteropServices.DllImport("kernel32.DLL", EntryPoint="Sleep")] 
        public extern static void Sleep ( int dwMilliseconds ) ; 
         [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint="mouse_event")]
         public static extern void mouse_event (
              int dwFlags,
              int dx,
              int dy,
              int cButtons,
              int dwExtraInfo
              );
        //得到鼠标相对与全屏的坐标,不是相对与你的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.bottom ) / 2) ; 
       Sleep ( 1 ) ; 
       } 
        } 
        else 
        { 
       for ( i = ( rectFrom.left + rectFrom.right ) / 2 ; i <= ( rectTo.left + rectTo.right ) / 2 ; i++ ) 
       { 
       SetCursorPos ( i , (  + rectFrom.bottom ) / 2) ; 
       Sleep ( 1 ) ; 
       } 
        } 
        if ( (  + rectFrom.bottom ) / 2 - (  + rectTo.bottom ) / 2 > 0 ) 
        { 
       for ( i = (  + rectFrom.bottom ) / 2 ; i >= (  + rectTo.bottom ) / 2 ; i-- ) 
       { 
       SetCursorPos ( ( rectTo.left + rectTo.right ) / 2 , i ) ; 
       Sleep ( 1 ) ; 
       } 
        } 
        else 
        { 
       for ( i = (  + rectFrom.bottom ) / 2 ; i <= (  + 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 ) ; 
        } 
         private static void LeftDown()
         {
              mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
         }
         private static void LeftUp()
         {
              mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
         }
         public static void LeftClick()
         {
              LeftDown();
              LeftUp();
         }
         private static void MiddleDown()
         {
              mouse_event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);
         }
         private static void MiddleUp()
         {
              mouse_event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);
         }
         public static void MiddleClick()
         {
              MiddleDown();
              MiddleUp();
         }
         private static void RightDown()
         {
              mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
         }
         private static void RightUp()
         {
              mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
         }
         public static void RightClick()
         {
              RightDown();
              RightUp();
         }
     }
}

 调用:

 Mouse.SetCursorPos(100,100);

 Mouse.LeftClick();//左键
 Mouse.RightClick();//右键

键盘操作可以用:
 SendKeys.SendWait();
Msn帮助:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWindowsFormsSendKeysClassTopic.htm

显示器一些操作:

using System;
using System.Runtime.InteropServices;
namespace Edobnet.Net.Lib
{
     /// <summary>
     /// Screen 的摘要说明。
     /// </summary>
     public class Screen
     {
         public enum DMDO
         {
              DEFAULT = 0,
              D90 = 1,
              D180 = 2,
              D270 = 3
         }
         [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
              struct DEVMODE
         {
              public const int DM_DISPLAYFREQUENCY = 0x400000;
              public const int DM_PELSWIDTH = 0x80000;
              public const int DM_PELSHEIGHT = 0x100000;
              private const int CCHDEVICENAME = 32;
              private const int CCHFORMNAME = 32;
              [MarshalAs(UnmanagedType.ByValTStr, SizeConst=CCHDEVICENAME)]
              public string dmDeviceName;
              public short dmSpecVersion;
              public short dmDriverVersion;
              public short dmSize;
              public short dmDriverExtra;
              public int dmFields;
              public int dmPositionX;
              public int dmPositionY;
              public DMDO dmDisplayOrientation;
              public int dmDisplayFixedOutput;
              public short dmColor;
              public short dmDuplex;
              public short dmYResolution;
              public short dmTTOption;
              public short dmCollate;
              [MarshalAs(UnmanagedType.ByValTStr, SizeConst=CCHFORMNAME)]
              public string dmFormName;
              public short dmLogPixels;
              public int dmBitsPerPel;
              public int dmPelsWidth;
              public int dmPelsHeight;
              public int dmDisplayFlags;
              public int dmDisplayFrequency;
              public int dmICMMethod;
              public int dmICMIntent;
              public int dmMediaType;
              public int dmDitherType;
              public int dmReserved1;
              public int dmReserved2;
              public int dmPanningWidth;
              public int dmPanningHeight;
         }
         [DllImport("user32.dll", CharSet=CharSet.Auto)]
              //static extern int ChangeDisplaySettings( DEVMODE lpDevMode,  int dwFlags);
         static extern int ChangeDisplaySettings( [In] ref DEVMODE lpDevMode,  int dwFlags);
         public Screen()
         {
              //
              // TODO: 在此处添加构造函数逻辑
              //
         }
         public static void changeScree(int W,int H,int F,out long RetVal)
         {
               RetVal=0;
              DEVMODE dm = new DEVMODE();
              dm.dmSize= (short)Marshal.SizeOf(typeof(DEVMODE));
              dm.dmPelsWidth = W;
              dm.dmPelsHeight= H;
              dm.dmDisplayFrequency=F;
              dm.dmFields = DEVMODE.DM_PELSWIDTH | DEVMODE.DM_PELSHEIGHT | DEVMODE.DM_DISPLAYFREQUENCY;
              RetVal = ChangeDisplaySettings(ref dm, 0);
         }
     }
}

消息控制:

using System;
namespace Edobnet.Net.Lib
{
     /// <summary>
     /// Window 的摘要说明。
     /// </summary>
     public class Windows
     {
         public Windows()
         {
              //
              // TODO: 在此处添加构造函数逻辑
              //
         }
         [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint="SendMessage")]
         public static extern int SendMessage (
              int hwnd,
              int wMsg,
              int wParam,
              int lParam
              );
     }
}

如:关闭显示器可以用:

Windows.SendMessage(this.Handle.ToInt32(),0x112,0xF170,2);

打开

Windows.SendMessage(this.Handle.ToInt32(),0x112,0xF170,-1);

DC的一些操作

using System;
using System.Runtime.InteropServices;
namespace Edobnet.Net.Lib
{
     /// <summary>
     /// DC 的摘要说明。
     /// </summary>
     public class DC
     {
         public DC()
         {
              //
              // TODO: 在此处添加构造函数逻辑
              //
         }
         [DllImport("gdi32.dll", EntryPoint="CreateDC")]
         public static extern int CreateDC (
              string lpDriverName,
              string lpDeviceName,
              string lpOutput,
              IntPtr lpInitData
              );
         [DllImport("gdi32.dll", EntryPoint="Rectangle")]
         public static extern int Rectangle (
              int hdc,
              int X1,
              int Y1,
              int X2,
              int Y2
              );
         [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
         private static extern bool BitBlt(
              IntPtr hdcDest, //目标设备的句柄
              int nXDest,//目标对象的左上角的X坐标
              int nYDest,//目标对象的左上角的X坐标
              int nWidth,//目标对象的矩形的宽度
              int nHeight,//目标对象的矩形的长度
              IntPtr hdcSrc,//源设备的句柄
              int nXSrc,//源对象的左上角的X坐标
              int nYSrc,//源对象的左上角的X坐标
              System.Int32 dwRop//光栅的操作值
              );
     }
}