zoukankan      html  css  js  c++  java
  • C# 鼠标连击源码 转

            private void timer1_Tick(object sender, EventArgs e)
            {
                if (GetAsyncKeyState(0x01) > 0)
                {
                    keydown();
                }
                //按下的时候开启
                /*
                 开启时钟
                 */
                
                //松开的时候关闭
                /*
                 关闭时钟
                 */
    
            }
      [DllImport("kernel32.dll")]
            static extern uint GetTickCount();
            /// <summary>
            /// 程序等待延迟执行
            /// </summary>
            /// <param name="ms"></param>
            static void MySleep(uint ms)
            {
                uint start = GetTickCount(); //获取系统运行了多长时间 , 返回值,毫秒
                while (GetTickCount() - start < ms) //当前运行时间 和之前运行时间做比较
                {
                    //Application.DoEvents();
                }
            }
            //键盘按下的时候执行
            public void keydown()
            {
                //测试结果 是  当GetAsyncKeyState(0x01) > 0 的时候,是鼠标左键按下.
                //mouse_event()按下的时候;会更改当GetAsyncKeyState(0x01)的状态;
                //鼠标按下时候;也会更改当GetAsyncKeyState(0x01)的状态
                //按下松开时候,GetKeyState(0x01)返回为1或0交替;
                try
                {
                    //左键抬起
                    MySleep(10);
                    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                    MySleep(10);
                    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                    MySleep(10);
                    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            private void button2_Click(object sender, EventArgs e)
            {
                timer1.Interval = 10;
                timer1.Enabled = true;
            }
     
            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; //模拟鼠标中键抬起
            [DllImport("user32.dll")]
            public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
            [DllImport("user32.dll")]
            public static extern int GetAsyncKeyState(int vKey);
            [DllImport("user32.dll")]
            public static extern int GetKeyState(int vKey);
    
            [DllImport("user32.dll")]
            public static extern int GetKeyboardState(byte[] pbKeyState);
            /*
             * 调用
    byte[] bs = new byte[256];
    GetKeyboardState(bs);
    //数组中存的是键盘的按键状态
             */

    转自:   前辈们.....

    附:
    
    VK_LBUTTON             鼠标左键                      0x01
    
    VK_RBUTTON             鼠标右键                      0x02
    
    VK_CANCEL              Ctrl + Break                  0x03
    
    VK_MBUTTON             鼠标中键                      0x04
    
    VK_BACK                Backspace 键       0x08
    
    VK_TAB                 Tab 键                        0x09
    
    VK_RETURN              回车键                        0x0D
    
    VK_SHIFT               Shift 键                      0x10
    
    VK_CONTROL             Ctrl 键                       0x11
    
    VK_MENU                Alt 键                 0x12
    
    VK_pause               Pause 键                      0x13
    
    VK_CAPITAL             Caps Lock 键                  0x14
    
    VK_ESCAPE              Esc 键                        0x1B
    
    VK_SPACE               空格键         0x20
    
    VK_PRIOR               Page Up 键                    0x21
    
    VK_NEXT                Page Down 键                  0x22
    
    VK_END                 End 键                        0x23
    
    VK_HOME                Home 键                       0x24
    
    VK_LEFT                左箭头键                      0x25
    
    VK_UP                  上箭头键                      0x26
    
    VK_RIGHT               右箭头键                      0x27
    
    VK_DOWN                下箭头键                      0x28
    
    VK_SNAPSHOT            print screen 键               0x2C
    
    VK_Insert              Insert 键                     0x2D
    
    VK_Delete              Delete 键                     0x2E
    
    '0''9'             数字 0 - 9                    0x30 - 0x39
    
    'A''Z'             字母 A - Z                    0x41 - 0x5A
    
    VK_LWIN                左WinKey(104键盘才有)         0x5B
    
    VK_RWIN                右WinKey(104键盘才有)         0x5C
    
    VK_APPS                AppsKey(104键盘才有)          0x5D
    
    VK_NUMPAD0            小键盘 00x60
    
    VK_NUMPAD1            小键盘 10x61
    
    VK_NUMPAD2            小键盘 20x62
    
    VK_NUMPAD3            小键盘 30x63
    
    VK_NUMPAD4            小键盘 40x64
    
    VK_NUMPAD5            小键盘 50x65
    
    VK_NUMPAD6            小键盘 60x66
    
    VK_NUMPAD7            小键盘 70x67
    
    VK_NUMPAD8            小键盘 80x68
    
    VK_NUMPAD9            小键盘 90x69
    
    VK_F1 - VK_F24        功能键F1 – F24               0x70 - 0x87
    
    VK_NUMLOCK            Num Lock 键                   0x90
    
    VK_SCROLL             Scroll Lock 键                0x91
    //钩子代码
    private
    MouseButtons GetButton(int wParam) { switch (wParam) { case 513: case 514: case 515: return MouseButtons.Left; case 516: case 517: case 518: return MouseButtons.Right; case 519: case 520: case 521: return MouseButtons.Middle; default: return MouseButtons.None; } } private MouseEventType GetEventType(int wParam) { switch (wParam) { case 513: case 516: case 519: return MouseEventType.MouseDown; case 514: case 517: case 520: return MouseEventType.MouseUp; case 515: case 518: case 521: return MouseEventType.DoubleClick; case 522: return MouseEventType.MouseWheel; case 512: return MouseEventType.MouseMove; default: return MouseEventType.None; } }

     关于 0x201 参数的宏定义 所在头文件  是winuser.h  

    #define WM_MOUSEFIRST                   0x0200
    #define WM_MOUSEMOVE                    0x0200
    #define WM_LBUTTONDOWN                  0x0201
    #define WM_LBUTTONUP                    0x0202
    #define WM_LBUTTONDBLCLK                0x0203
    #define WM_RBUTTONDOWN                  0x0204
    #define WM_RBUTTONUP                    0x0205
    #define WM_RBUTTONDBLCLK                0x0206
    #define WM_MBUTTONDOWN                  0x0207
    #define WM_MBUTTONUP                    0x0208
    #define WM_MBUTTONDBLCLK                0x0209
    #define WM_MOUSELAST                    0x0209
  • 相关阅读:
    AirtestIDE基本功能(二)
    AirtestIDE基本功能(一)
    Pycharm Debug功能详解
    AirtestIDE环境安装
    leetcode-338. 比特位计数
    leetcode-401. 二进制手表
    leetcode-392. 判断子序列
    leetcode-155. 最小栈
    leetcode-111. 二叉树的最小深度
    leetcode-110. 平衡二叉树
  • 原文地址:https://www.cnblogs.com/enych/p/12214460.html
Copyright © 2011-2022 走看看