C# mouse keyboard monitor
/***********************************************************************************
* 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的更多相关文章
- Linux kernel4.4.12 添加make menuconfig 可选项
Linux kernel 源码添加可选项 闲来无事,顺便记录一篇在Linux kernel make menuconfig 内添加一个可选项. 说不定将来就要用到这个东西呢. linux kernel ...
- 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词
第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...
- 学习之路三十八:Hook(钩子)的学习
好久没写文章了,还记得年前面试了一家公司,为了检测一下我的学习能力,给了我一个任务,做一个自动登录并自动操作菜单的程序. 花了几天的时间研究了Hook以及使用WindowsAPI操作程序的知识,现在记 ...
- Awesome Python
Awesome Python A curated list of awesome Python frameworks, libraries, software and resources. Insp ...
- usb.ids
# # List of USB ID's # # Maintained by Vojtech Pavlik <vojtech@suse.cz> # If you have any new ...
- Debian上安装TightVNC Server
from:www.penlug.org/twiki/bin/view/Main/TightVNC Using VNC The tool vncserver allows you to run ad ...
- 设备管理 USB ID
发现个USB ID站点,对于做设备管理识别的小伙伴特别实用 http://www.linux-usb.org/usb.ids 附录: # # List of USB ID's # # Maintain ...
- Angular 学习笔记 ( CDK - Accessibility )
@angular/ckd 是 ng 对于 ui 组建的基础架构. 是由 material 团队开发与维护的, 之所以会有 cdk 看样子是因为在开发 material 的时候随便抽象一个层次出来给大家 ...
- Linux:Gentoo系统的安装笔记(四)
本来以为结束,谁知离正常的系统还是比较远,不过不放弃,这期的笔记我敢肯定是最后一期了,写了那么多我也觉得烦,被gentoo折磨烦了. 安装KDE桌面 选择正确的配置文件 先获取root权限来安装桌面环 ...
随机推荐
- python018 Python3 输入和输出
Python3 输入和输出在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能.本章节我们将具体介绍 Python 的输入输出. 输出格式美化Python两种输出值的方式: 表达式语句 ...
- 【状压DP】OpenJ_POJ - C17K Lying Island
https://vjudge.net/contest/171652#problem/K [题意] 小岛上有n个人,有些是好人(一定是真话),有些是坏人(可能是真话也可能是假话),现在要判断最多有多少好 ...
- 为docker容器设置独立ip
docker 1.12使用新版macvlan设置与宿主机同网段ip ****************************************** 由于开发的一些特殊需求,需要将容器部署在与宿主 ...
- HDU 6396 贪心+优先队列+读入挂
Swordsman Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- web.py 使用 db.select 返回的数据只能遍历一次
2013-10-05 23:04:33| 1. web.py 使用 db.select 返回的数据只能遍历一次import webdb = web.database(dbn='mysql', db ...
- 202. Segment Tree Query
最后更新 二刷 09-Jan-17 正儿八经线段树的应用了. 查找区间内的值. 对于某一个Node,有这样的可能: 1)需要查找区间和当前NODE没有覆盖部分,那么直接回去就行了. 2)有覆盖的部分, ...
- 【Nginx】基本数据结构
整型的封装 typedef intptr_t ngx_int _t;//有符号整型 typedef uintptr_t ngx_uint_t;//无符号整型 字符串的封装 typedef struct ...
- Android系统改动时间格式为24小时制
1. frameworks/base/packages/SettingsProvider/res/values/defaults.xml 添加<stringname="time_12_ ...
- 微信小程序实战之 goods(订餐页)
项目目录: 模拟数据: utils / data.js function getSData() { var data = [ { "name": "热销榜", ...
- <一>读<<大话设计模式>>之简单工厂模式
工厂模式尽管简单.可是写下这篇文章却不简单. 第一:本人经过内心的挣扎后才决定開始写博文的.为什么呢,由于好长时间没有写了,对自己的文学功底也是好不自信.可是技术这东西你不写出来你真不知道自己掌握多少 ...