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权限来安装桌面环 ...
随机推荐
- zoj 2886 Look and Say
Look and Say Time Limit: 2 Seconds Memory Limit: 65536 KB The look and say sequence is defined ...
- BZOJ 1022: [SHOI2008]小约翰的游戏John【anti-SG】
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取 ...
- POJ1159:Palindrome【dp】
题目大意:给出一个字符串,问至少添加多少个字符才能使它成为回文串? 思路:很明显的方程是:dp[i][j]=min{dp[i+1][j],dp[i][j-1],dp[i+1][j-1](str[i]= ...
- POJ 2777 Count Color【线段树】
题目大意:要求完成以下两个操作:1.将一个区间刷上一种颜色2.询问一段区间上有多少种颜色 思路:这两个操作线段树都可以很迅速的完成,具体做法是:线段树上每个节点存这个线段上的颜色数量,由于颜色数很少, ...
- SpringBoot自定义Filter
SpringBoot自定义Filter SpringBoot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,当然我们可以自定 义F ...
- CodeForces - 356A Knight Tournament
http://codeforces.com/problemset/problem/356/A 首先理解题意 每次给出l 和r 在l - r之间还有资格的选手中得出一个胜者 暴力思路: 首先维护还有资 ...
- MySQL性能优化的21个最佳实践 和 mysql使用索引【转载】
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...
- poj1330+hdu2586 LCA离线算法
整整花了一天学习了LCA,tarjan的离线算法,就切了2个题. 第一题,给一棵树,一次查询,求LCA.2DFS+并查集,利用深度优先的特点,回溯的时候U和U的子孙的LCA是U,U和U的兄弟结点的子孙 ...
- mybatis几种开发方式
mybatis是比较轻巧的半自动化的CRM框架,它有几种开发方式,现今张列于此: 一.注解方式:在接口方法上面写SQL语句,有点类似springdataJPA 的query sql 语句 范例 @se ...
- eclipse菜单字体乱码的解决
方法一: 这个跟活动控制台代码页有关. 如果要更改为 UTF-8,则需要运行 chcp 命令: chcp 65001 有时新安装的系统可能在运行一些中文软件时显示错乱,可通过控制面板修改系统区域来管理 ...