一个简单的模拟键盘鼠标操作的类
using System;
using System.Runtime.InteropServices;
using System.Text;
class Keyboard
{
const uint KEYEVENTF_EXTENDEDKEY = 0x1;
const uint KEYEVENTF_KEYUP = 0x2;
[DllImport("user32.dll")]
static extern short GetKeyState(int nVirtKey);
[DllImport("user32.dll")]
static extern void keybd_event(
byte bVk,
byte bScan,
uint dwFlags,
uint dwExtraInfo
);
public enum VirtualKeys: byte
{
VK_NUMLOCK = 0x90, //数字锁定键
VK_SCROLL = 0x91, //滚动锁定
VK_CAPITAL = 0x14, //大小写锁定
VK_A = 62
}
public static bool GetState(VirtualKeys Key)
{
return (GetKeyState((int)Key)==1);
}
public static void SetState(VirtualKeys Key, bool State)
{
if(State!=GetState(Key))
{
keybd_event(
(byte)Key,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0
);
keybd_event(
(byte)Key,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0
);
}
}
}
示例:
模拟操作
Keyboard.SetState(
VirtualKeys.VK_CAPITAL,
!Keyboard.GetState(VirtualKeys.VK_CAPITAL)
);
得到键盘状态
Keyboard.GetState(VirtualKeys.VK_CAPITAL)
* 十进制值 标识符 IBM兼容键盘
--------------------------------------------------------------------------------
1 VK_LBUTTON 鼠标左键
2 VK_RBUTTON 鼠标右键
3 VK_CANCEL Ctrl+Break(通常不需要处理)
4 VK_MBUTTON 鼠标中键
8 VK_BACK Backspace
9 VK_TAB Tab
12 VK_CLEAR Num Lock关闭时的数字键盘5
13 VK_RETURN Enter(或者另一个)
16 VK_SHIFT Shift(或者另一个)
17 VK_CONTROL Ctrl(或者另一个)
18 VK_MENU Alt(或者另一个)
19 VK_PAUSE Pause
20 VK_CAPITAL Caps Lock
27 VK_ESCAPE Esc
32 VK_SPACE Spacebar
33 VK_PRIOR Page Up
34 VK_NEXT Page Down
35 VK_END End
36 VK_HOME Home
37 VK_LEFT 左箭头
38 VK_UP 上箭头
39 VK_RIGHT 右箭头
40 VK_DOWN 下箭头
41 VK_SELECT 可选
42 VK_PRINT 可选
43 VK_EXECUTE 可选
44 VK_SNAPSHOT Print Screen
45 VK_INSERT Insert
46 VK_DELETE Delete
47 VK_HELP 可选
48~57 无 主键盘上的0~9
65~90 无 A~Z
96~105 VK_NUMPAD0~VK_NUMPAD9 Num Lock打开时数字键盘上的0~9
106 VK_NULTIPLY 数字键盘上的*
107 VK_ADD 数字键盘上的+
108 VK_SEPARATOR 可选
109 VK_SUBTRACT 数字键盘上的-
110 VK_DECIMAL 数字键盘上的.
111 VK_DIVIDE 数字键盘上的/
112~135 VK_F1~VK_F24 功能键F1~F24
144 VK_NUMLOCK Num Lock
145 VK_SCROLL Scroll Lock
*/
突然发现在c#里面原来还有一个 System.Windows.Forms.SendKeys
不过这个只能模拟键盘
真正能模拟鼠标操作的代码在这里!找的我好辛苦啊!
函数声明:
private readonly int MOUSEEVENTF_LEFTDOWN = 0x2;
private readonly int MOUSEEVENTF_LEFTUP = 0x4;
[DllImport("user32")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
调用方法:
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
其中X,Y分别是你要点击的点的横坐标和纵坐标
转载于:https://www.cnblogs.com/freedom831215/archive/2009/10/03/1577519.html
一个简单的模拟键盘鼠标操作的类相关推荐
- java 模拟鼠标_java实现简单的模拟键盘鼠标操作
简简单单的记录: 近期需要用到模拟键盘鼠标操作,所以记录下来,以备后用,看了很多例子,未标明引用,请见谅 package com.text.jna; import javax.imageio.Imag ...
- Python 模拟键盘鼠标操作实战教程
在某些情况下,如果我们需要进行自动化操作的应用没有提供相应的接口,我们无法直接通过Python来调用API实现自动化.这种情况下,Python也不是完全没有办法的,我们可以采用模拟键盘和鼠标的方式实现 ...
- 程序模拟键盘鼠标操作
用代码模拟键盘鼠标操作,主要用到keybd_event/mouse_event或者SendInput API函数.使用示例如下(附注释): /* * 模拟键盘输入,以 ...
- Cypress之模拟键盘鼠标操作以及页面元素拖动操作
上篇文章讲解了使用cypress框架时,如何上传或者下载文件,以及定位操作iframe和shadow dom下的页面元素.此次课程将讲解如何模拟键盘输入.鼠标操作以及如何拖动页面元素,另外,会介绍如何 ...
- python在程序中模拟键盘鼠标操作
Python中模拟键盘和鼠标最著名的模块是:pymouse 和 pykeyboard.一次安装两个模块比较麻烦,而有一个库整合了这两个模块,而且能支持跨平台操作,这个库叫 PyUserInput,通过 ...
- java整理软件---java模拟键盘,鼠标操作
1.Java 模拟键盘输入的小Demo,实现自动按下:模拟Ctrl+Alt+Z的按下和抬起 如果你开着qq的话,那么qq会自动弹出来.哈哈,代替人工操作; import java.awt.Rob ...
- 【C++】一个简单的模拟实现鼠标脚本精灵
主要实现了C++里的GetAsynckeyState(VK_NAME)方法来监控鼠标的操作状态,然后利用GetCursorPos(LPPOINT lp)来获取鼠标位置,最后读取录制的操作数据,进行操作 ...
- python模拟键盘鼠标操作
python版本:3.6.2 扩展: autopy3 (python2.x的话 安装autopy 就可以了) //autopy是一个自动化操作的python库,可以模拟一些鼠标.键盘事件,还能对屏幕进 ...
- C/C++ Windows平台 模拟键盘 / 鼠标操作
原理:调用Windows API 头文件: Windows.h 鼠标 参考:MSDN :mouse_event function 按键 使用定义在Winuser.h中的mouse_event函数(Wi ...
- C# 使用Win32 API模拟键盘鼠标操作网页
在webbrowser控件中的document complete 事件中设置链接到自身 private void ieFrame_DocumentCompleted(object sender, We ...
最新文章
- 运营书籍:新媒体运营实战笔记
- 用 GDI 操作 EMF 文件[8]: 绘制图元文件时改变画笔与画刷
- VTK:几何对象之Polyhedron
- Master of GCD(差分数组||线段树)
- php对话框制作,织梦系统“提示窗口对话框类”详解,oxwindow.class.php、catalog_do.php...
- QQuickRenderControl
- 计算机专业能评电子工程师吗,计算机工程师职称 评定条件
- Mybatis 开发 dao 的方法
- 《精通JavaScript》总结
- Kali、linux中安装软件
- 趋势杀毒软件注意事项
- SQL 校验身份证格式
- 新浪微博正在审核的开发者平台应用添加测试账号
- Reducing Participation Costs via Incremental Verification for Ledger Systems学习笔记
- 基于UDP的企业级大文件传输体系
- matlab符号计算证明sin,matlab的符号计算
- 2019.8.7 金华正睿集训总结Day11(ACM)
- 【蓝桥杯单片机】第十三届蓝桥杯单片机省赛客观题及其题解
- 什么是Perl语言?
- OA系统都能为企业带来什么