c#winform模拟鼠标键盘点击

using System.Runtime.InteropServices;

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        enum MouseEventFlag : uint
        {
            Move = 0x0001,
            LeftDown = 0x0002,
            LeftUp = 0x0004,
            RightDown = 0x0008,
            RightUp = 0x0010,
            MiddleDown = 0x0020,
            MiddleUp = 0x0040,
            XDown = 0x0080,
            XUp = 0x0100,
            Wheel = 0x0800,
            VirtualDesk = 0x4000,
            Absolute = 0x8000
        }

        //[System.Runtime.InteropServices.DllImport("user32")]
        //private static extern int mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
        移动鼠标 
        //const int MOUSEEVENTF_MOVE = 0x0001;
        模拟鼠标左键按下 
        //const int MOUSEEVENTF_LEFTDOWN = 0x0002;
        模拟鼠标左键抬起 
        //const int MOUSEEVENTF_LEFTUP = 0x0004;
        模拟鼠标右键按下 
        //const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
        模拟鼠标右键抬起 
        //const int MOUSEEVENTF_RIGHTUP = 0x0010;
        模拟鼠标中键按下 
        //const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
        模拟鼠标中键抬起 
        //const int MOUSEEVENTF_MIDDLEUP = 0x0040;
        标示是否采用绝对坐标 
        //const int MOUSEEVENTF_ABSOLUTE = 0x8000;
        模拟鼠标滚轮滚动操作,必须配合dwData参数
        //const int MOUSEEVENTF_WHEEL = 0x0800;

        [DllImport("user32.dll")]
        static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);

        [DllImport("user32.dll")]
        public static extern int SetCursorPos(int x, int y);

        public static void MouseLeftClickEvent(int dx, int dy, uint data)
        {
            SetCursorPos(dx, dy);
            //System.Threading.Thread.Sleep(2 * 1000);
            mouse_event(MouseEventFlag.LeftDown, dx, dy, data, UIntPtr.Zero);
            mouse_event(MouseEventFlag.LeftUp, dx, dy, data, UIntPtr.Zero);
        }

       public static void MouseLeftClickEvent(uint data)
       {
           SetCursorPos(Convert.ToInt32(Cursor.Position.X), Convert.ToInt32(Cursor.Position.Y));
           System.Threading.Thread.Sleep(2 * 1000);
           mouse_event(MouseEventFlag.LeftDown, Convert.ToInt32(Cursor.Position.X), Convert.ToInt32(Cursor.Position.Y), data, UIntPtr.Zero);
           mouse_event(MouseEventFlag.LeftUp, Convert.ToInt32(Cursor.Position.X), Convert.ToInt32(Cursor.Position.Y), data, UIntPtr.Zero);
       }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            isRun = true;
            Task.Run(() =>
            {
                while (isRun)
                {
                    Thread.Sleep(3000);
                    MouseLeftClickEvent(1);
                    System.Threading.Thread.Sleep(1000);//延迟 msel 毫秒
                    KeyBoard.keyPress(KeyBoard.vKeyReturn);//按一下后退(back)键

                    //  MouseLeftClickEvent(500, 500, 1);
                }

            });
 
      
        }


        bool isRun;

        private void button2_Click(object sender, EventArgs e)
        {
            isRun=false;

        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Microsoft Visual Studio 2010做的C#实时监控鼠标位置和左键点击时的位置实例,主要代码: public class MouseHook { private Point point; private Point Point { get { return point; } set { if (point != value) { point = value; if (MouseMoveEvent != null) { var e = new MouseEventArgs(MouseButtons.None, 0, point.X, point.Y, 0); MouseMoveEvent(this, e); } } } } private int hHook; private const int WM_LBUTTONDOWN = 0x201; public const int WH_MOUSE_LL = 14; public Win32Api.HookProc hProc; public MouseHook() { this.Point = new Point(); } public int SetHook() { hProc = new Win32Api.HookProc(MouseHookProc); hHook = Win32Api.SetWindowsHookEx(WH_MOUSE_LL, hProc, IntPtr.Zero, 0); return hHook; } public void UnHook() { Win32Api.UnhookWindowsHookEx(hHook); } private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { Win32Api.MouseHookStruct MyMouseHookStruct = (Win32Api.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32Api.MouseHookStruct)); if (nCode < 0) { return Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam); } else { if (MouseClickEvent != null) { MouseButtons button = MouseButtons.None; int clickCount = 0; switch ((Int32)wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; break; } var e = new MouseEventArgs(button, clickCount, point.X, point.Y, 0); MouseClickEvent(this, e); } this.Point = new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y); return Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam); } } public delegate void MouseMoveHandler(object sender, MouseEventArgs e); public event MouseMoveHandler MouseMoveEvent; public delegate void MouseClickHandler(object sender, MouseEventArgs e); public event MouseClickHandler MouseClickEvent; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值