/***********************************************************************************
* C# mouse keyboard monitor
* 说明:
* 最近想用C#做一个鼠标、键盘模拟器,所以找了点资料模拟一下。
*
* 2016-7-10 深圳 南山平山村 曾剑锋
**********************************************************************************/ 一、参考文档:
. C# 如何用按钮实现鼠标滚轮操作
http://blog.csdn.net/jglie/article/details/6872333
. c# mouse_event 模拟鼠标点击事件 绝对位置
http://blog.sina.com.cn/s/blog_71d894bd01013goa.html
. C# Win32API 模拟鼠标移动及点击事件
http://www.cnblogs.com/08shiyan/archive/2011/07/18/2109086.html
. How to: Simulate Mouse and Keyboard Events in Code
https://msdn.microsoft.com/en-us/library/ms171548.aspx
. SendKeys Class
https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx
. Virtual-Key Codes
https://msdn.microsoft.com/zh-cn/library/dd375731(v=vs.85).aspx
. C#中将字母/字符转换为键盘的key/键值/keycode
http://www.crifan.com/convert_char_letter_to_key_keycode_in_csharp/
. 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), , , );
keybd_event((byte)VkKeyScan(key), , , );
}
}
} 三、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, , );
} public static void absMove(int x, int y)
{
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, , , , );
} public static void wheel(int roll)
{
mouse_event(MOUSEEVENTF_WHEEL, , , roll, );
} public static void leftSingle()
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, , , , );
} public static void leftDouble()
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, , , , );
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, , , , );
} public static void right()
{
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, , , , );
} public static void middle()
{
mouse_event(MOUSEEVENTF_MIDDLEUP | MOUSEEVENTF_MIDDLEDOWN, , , , );
}
}
}

C# mouse keyboard monitor的更多相关文章

  1. Linux kernel4.4.12 添加make menuconfig 可选项

    Linux kernel 源码添加可选项 闲来无事,顺便记录一篇在Linux kernel make menuconfig 内添加一个可选项. 说不定将来就要用到这个东西呢. linux kernel ...

  2. 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词

    第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...

  3. 学习之路三十八:Hook(钩子)的学习

    好久没写文章了,还记得年前面试了一家公司,为了检测一下我的学习能力,给了我一个任务,做一个自动登录并自动操作菜单的程序. 花了几天的时间研究了Hook以及使用WindowsAPI操作程序的知识,现在记 ...

  4. Awesome Python

    Awesome Python  A curated list of awesome Python frameworks, libraries, software and resources. Insp ...

  5. usb.ids

    # # List of USB ID's # # Maintained by Vojtech Pavlik <vojtech@suse.cz> # If you have any new ...

  6. Debian上安装TightVNC Server

    from:www.penlug.org/twiki/bin/view/Main/TightVNC Using VNC   The tool vncserver allows you to run ad ...

  7. 设备管理 USB ID

    发现个USB ID站点,对于做设备管理识别的小伙伴特别实用 http://www.linux-usb.org/usb.ids 附录: # # List of USB ID's # # Maintain ...

  8. Angular 学习笔记 ( CDK - Accessibility )

    @angular/ckd 是 ng 对于 ui 组建的基础架构. 是由 material 团队开发与维护的, 之所以会有 cdk 看样子是因为在开发 material 的时候随便抽象一个层次出来给大家 ...

  9. Linux:Gentoo系统的安装笔记(四)

    本来以为结束,谁知离正常的系统还是比较远,不过不放弃,这期的笔记我敢肯定是最后一期了,写了那么多我也觉得烦,被gentoo折磨烦了. 安装KDE桌面 选择正确的配置文件 先获取root权限来安装桌面环 ...

随机推荐

  1. zoj 2201 No Brainer

    No Brainer Time Limit: 2 Seconds      Memory Limit: 65536 KB Zombies love to eat brains. Yum. Input ...

  2. [luoguP2461] [SDOI2008]递归数列(DP + 矩阵优化)

    传送门 本题主要是构造矩阵,我们只需要把那一段式子看成两个前缀和相减, 然后就直接矩阵连乘. 直接对那个k+1阶矩阵快速幂即可,注意初始化矩阵为单位矩阵,即主对角线(左上到右下)都为1其他都为0. 另 ...

  3. ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏

    1:操作设置取消自动锁屏: setting-->power--->never 2:  设置自动锁屏快捷键: 快捷键设置一般在setting-->devices--->keybo ...

  4. Permutations(排列问题,DFS回溯)

    Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...

  5. 学习日常笔记<day11>cookie及session

    1.会话管理 1.1会话管理定义 会话管理:管理浏览器客户端和服务端之间的会话过程中产生的会话数据 域对象:实现资源之间的数据共享 request 域对象 context 域对象 1.2.会话技术 C ...

  6. nginx.org与nginx.com有什么区别(Nginx与Nginx Plus)

    nginx.org是开源社区,管理着Nginx开源版. nginx.xom是商业社区,管理着Nginx Plus商业版. 商业版和开源版是有很大区别的,服务还加更强大的功能,当然依托开源社区加载第三方 ...

  7. Linux源代码分析工具-Source Insight

    下载地址:http://www.sourceinsight.com/down35.html 可用注冊码:SI3US-205035-36448 使用说明:http://wenku.baidu.com/v ...

  8. kd树 hdu2966 In case of failure

    传送门:pid=2966" target="_blank">点击打开链接 题意:给n个点,求对于每一个点到近期点的欧几里德距离的平方. 思路:看鸟神博客学kd树劲啊 ...

  9. 【求建议】毕业之声——信院IT类毕业学子经验分享交流会

    一:缘由 在和非常多学子交流,及上课的经历中,发现一个非常普遍的现象:部分大一学生即失去了对学习.对专业的兴趣.有人在迷茫之后奋起直追.从而珍惜利用不多的大学时光努力提高自己.有人在迷茫中沉沦,沉迷于 ...

  10. 湘潭邀请赛——Alice and Bob

    Alice and Bob Accepted : 133   Submit : 268 Time Limit : 1000 MS   Memory Limit : 65536 KB  Problem ...