zoukankan      html  css  js  c++  java
  • C# mouse keyboard monitor

    /***********************************************************************************
     *                          C# mouse keyboard monitor
     * 说明:
     *     最近想用C#做一个鼠标、键盘模拟器,所以找了点资料模拟一下。
     *
     *                                                 2016-7-10 深圳 南山平山村 曾剑锋
     **********************************************************************************/
    
    
    一、参考文档:
        1. C# 如何用按钮实现鼠标滚轮操作
            http://blog.csdn.net/jglie/article/details/6872333
        2. c#  mouse_event 模拟鼠标点击事件 绝对位置
            http://blog.sina.com.cn/s/blog_71d894bd01013goa.html
        3. C# Win32API 模拟鼠标移动及点击事件
            http://www.cnblogs.com/08shiyan/archive/2011/07/18/2109086.html
        4. How to: Simulate Mouse and Keyboard Events in Code
            https://msdn.microsoft.com/en-us/library/ms171548.aspx
        5. SendKeys Class
            https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx
        6. Virtual-Key Codes
            https://msdn.microsoft.com/zh-cn/library/dd375731(v=vs.85).aspx
        7. C#中将字母/字符转换为键盘的key/键值/keycode
            http://www.crifan.com/convert_char_letter_to_key_keycode_in_csharp/
        8. VkKeyScan function
            https://msdn.microsoft.com/en-us/library/ms646329(VS.85).aspx
    
    二、KeyBoard
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        using System.Runtime.InteropServices;
        using System.Windows.Forms;
    
        namespace MouseMonitorW
        {
            class KeyBoard
            {
                [DllImport("user32.dll")]
                static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
                [DllImport("user32.dll")]
                public static extern Keys VkKeyScan(char ch); 
    
                public static void sendKey(char key)
                {
                    keybd_event((byte)VkKeyScan(key), 0, 0, 0);
                    keybd_event((byte)VkKeyScan(key), 0, 2, 0);
                }
            }
        }
    
    
    三、Mouse:
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        using System.Runtime.InteropServices;
    
        namespace MouseMonitorW
        {
            class Mouse
            {
                private const int MOUSEEVENTF_MOVE          = 0x0001;   // 移动鼠标 
                private const int MOUSEEVENTF_LEFTDOWN      = 0x0002;   // 模拟鼠标左键按下 
                private const int MOUSEEVENTF_LEFTUP        = 0x0004;   // 模拟鼠标左键抬起 
                private const int MOUSEEVENTF_RIGHTDOWN     = 0x0008;   // 模拟鼠标右键按下 
                private const int MOUSEEVENTF_RIGHTUP       = 0x0010;   // 模拟鼠标右键抬起 
                private const int MOUSEEVENTF_WHEEL         = 0x0800;   // 模拟鼠标滚轮
                private const int MOUSEEVENTF_MIDDLEDOWN    = 0x0020;   // 模拟鼠标中键按下 
                private const int MOUSEEVENTF_MIDDLEUP      = 0x0040;   // 模拟鼠标中键抬起 
                private const int MOUSEEVENTF_ABSOLUTE      = 0x8000;   // 标示是否采用绝对坐标 
    
                [DllImport("user32")]
                private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
    
                public static void move(int dx, int dy)
                {
                    mouse_event(MOUSEEVENTF_MOVE, dx, dy, 0, 0); 
                }
    
                public static void absMove(int x, int y)
                {
                    mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0);
                }
    
                public static void wheel(int roll) 
                {
                    mouse_event(MOUSEEVENTF_WHEEL, 0, 0, roll, 0);
                }
    
                public static void leftSingle()
                {
                    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                }
    
                public static void leftDouble()
                {
                    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                }
    
                public static void right()
                {
                    mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
                }
    
                public static void middle()
                {
                    mouse_event(MOUSEEVENTF_MIDDLEUP | MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0);
                }
            }
        }
  • 相关阅读:
    DynamicLibrary动态查询需要的一个CS 文件下载
    指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效
    ACCESS的一个相对好用的数据库连接字符串
    ASP.NET 入门 博客园文章 索引篇
    c# 最小化到系统栏,时钟,随机语句,程序发布 读书笔记本 (三)
    poj 2817 WordStack (状态dp)
    hdu 4380 Farmer Greedy (计算几何 2012 MultiUniversity Training Contest 9 )
    hdu 4353 Finding Mine (计算几何 2012 MultiUniversity Training Contest 6 )
    poj 3735 Training little cats (矩阵快速幂)
    hdu 4374 One hundred layer (dp +单调队列 2012 MultiUniversity Training Contest 8 )
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5657068.html
Copyright © 2011-2022 走看看