C#模拟鼠标操作以及键盘输入

模拟鼠标以及键盘基本输入源代码 

  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Windows.Forms;
    
    namespace MockMouseAndKeyboard
    {
        /// <summary>
        /// 模拟鼠标操作以及键盘输入
        /// </summary>
        public class MockNet
        {
            //调用鼠标事件WindoswsAPI,具体请参见 http://www.office-cn.net/t/api/index.html?mouse_event.htm
            [DllImport("user32")]
            private static extern int mouse_event(int flag, int dx, int dy, int delta, int info);
    
            public enum MouseFlags
            {
            //移动鼠标 
             MouseMove = 0x0001,
            //模拟鼠标左键按下 
             MouseLeftDown = 0x0002,
            //模拟鼠标左键抬起 
             MouseLeftUp = 0x0004,
            //模拟鼠标右键按下 
             MouseRightDown = 0x0008,
            //模拟鼠标右键抬起 
             MouseRightUp = 0x0010,
            //模拟鼠标中键按下 
             MouseMiddleDown = 0x0020,
            //模拟鼠标中键抬起 
             MouseMiddleUp = 0x0040,
            //标示是否采用绝对坐标 
             IsAbsolute = 0x8000,
            //模拟鼠标滚轮滚动操作,滚轮滑动数值为形参delta的值
            MouseWheel = 0x0800,
            }
    
            //调用鼠标光标位置WindoswsAPI,具体请参见 http://www.office-cn.net/t/api/index.html?setcursorpos.htm
            [DllImport("user32.dll")]
            static extern bool SetCursorPos(int x, int y);
    
    
            /// <summary>
            /// 移动光标到指定位置
            /// </summary>
            /// <param name="x">屏幕水平方向X坐标</param>
            /// <param name="y">屏幕垂直方向Y坐标,注意对于Y坐标屏幕原点(0,0)为左上角</param>
            public bool MouseMoveToPoint(int x, int y)
            {
                return SetCursorPos(x,y);
                //当然也可以使用Cursor.Position = new System.Drawing.Point(x, y);
            }
    
            /// <summary>
            /// 鼠标左按下
            /// </summary>
            public void LeftDown()
            {
                mouse_event((int)MouseFlags.MouseLeftDown,0,0,0,0);
            }
            /// <summary>
            /// 鼠标左抬起
            /// </summary>
            public void LeftUp()
            {
                mouse_event((int)MouseFlags.MouseLeftUp, 0, 0, 0, 0);
            }
            /// <summary>
            /// 鼠标左击
            /// </summary>
            public void LeftClick()
            {
                this.LeftDown();
                this.LeftUp();
            }
    
            /// <summary>
            /// 鼠标中键按下
            /// </summary>
            public void MiddleDown()
            {
                mouse_event((int)MouseFlags.MouseMiddleDown, 0, 0, 0, 0);
            }
            /// <summary>
            /// 鼠标中键抬起
            /// </summary>
            public void MiddleUp()
            {
                mouse_event((int)MouseFlags.MouseMiddleUp, 0, 0, 0, 0);
            }
    
            /// <summary>
            /// 滚轮滚轮点击
            /// </summary>
            public void MiddleClick()
            {
                this.MiddleDown();
                this.MiddleUp();
            }
    
            /// <summary>
            /// 鼠标滚轮滑动
            /// </summary>
            /// <param name="delta">滑动数值</param>
            public void MiddleWheel(int delta)
            {
                mouse_event((int)MouseFlags.MouseWheel, 0, 0, delta, 0);
            }
    
            /// <summary>
            /// 鼠标右键按下
            /// </summary>
            public void RightDown()
            {
                mouse_event((int)MouseFlags.MouseRightDown, 0, 0, 0, 0);
            }
            /// <summary>
            /// 鼠标中键抬起
            /// </summary>
            public void RightUp()
            {
                mouse_event((int)MouseFlags.MouseRightUp, 0, 0, 0, 0);
            }
    
            /// <summary>
            /// 滚轮滚轮点击
            /// </summary>
            public void RightClick()
            {
                this.RightDown();
                this.RightUp();
            }
    
            /// <summary>
            /// 键盘输入字符串
            /// </summary>
            /// <param name="value"></param>
            /// <param name="is_enter">默认不开启回车键</param>
            public void KeyboardInput(string value,bool is_enter=false)
            {
                if (is_enter)
                    value += "{ENTER}";
                //注意要使得SendKeys起作用需要在App.config文件中configuration一栏配置使用信息
                //具体请使用请参见 https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.sendkeys.sendwait?view=netframework-4.5
                SendKeys.SendWait(value);
            }
        }
    }
    

        键盘输入需要配置信息:

 源代码代码经过测试,开发框架环境为WPF项目

         

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值