您的位置:首页 > 编程语言 > C#

C# mouse keyboard monitor

2016-07-10 08:10 447 查看
/***********************************************************************************
*                          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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: