一个简单的模拟键盘鼠标操作的类,扩充 VirtualKeys 枚举就可以了,或者直接写!

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

一个简单的模拟键盘鼠标操作的类相关推荐

  1. java 模拟鼠标_java实现简单的模拟键盘鼠标操作

    简简单单的记录: 近期需要用到模拟键盘鼠标操作,所以记录下来,以备后用,看了很多例子,未标明引用,请见谅 package com.text.jna; import javax.imageio.Imag ...

  2. Python 模拟键盘鼠标操作实战教程

    在某些情况下,如果我们需要进行自动化操作的应用没有提供相应的接口,我们无法直接通过Python来调用API实现自动化.这种情况下,Python也不是完全没有办法的,我们可以采用模拟键盘和鼠标的方式实现 ...

  3. 程序模拟键盘鼠标操作

    用代码模拟键盘鼠标操作,主要用到keybd_event/mouse_event或者SendInput  API函数.使用示例如下(附注释):         /*         * 模拟键盘输入,以 ...

  4. Cypress之模拟键盘鼠标操作以及页面元素拖动操作

    上篇文章讲解了使用cypress框架时,如何上传或者下载文件,以及定位操作iframe和shadow dom下的页面元素.此次课程将讲解如何模拟键盘输入.鼠标操作以及如何拖动页面元素,另外,会介绍如何 ...

  5. python在程序中模拟键盘鼠标操作

    Python中模拟键盘和鼠标最著名的模块是:pymouse 和 pykeyboard.一次安装两个模块比较麻烦,而有一个库整合了这两个模块,而且能支持跨平台操作,这个库叫 PyUserInput,通过 ...

  6. java整理软件---java模拟键盘,鼠标操作

    1.Java 模拟键盘输入的小Demo,实现自动按下:模拟Ctrl+Alt+Z的按下和抬起    如果你开着qq的话,那么qq会自动弹出来.哈哈,代替人工操作; import java.awt.Rob ...

  7. 【C++】一个简单的模拟实现鼠标脚本精灵

    主要实现了C++里的GetAsynckeyState(VK_NAME)方法来监控鼠标的操作状态,然后利用GetCursorPos(LPPOINT lp)来获取鼠标位置,最后读取录制的操作数据,进行操作 ...

  8. python模拟键盘鼠标操作

    python版本:3.6.2 扩展: autopy3 (python2.x的话 安装autopy 就可以了) //autopy是一个自动化操作的python库,可以模拟一些鼠标.键盘事件,还能对屏幕进 ...

  9. C/C++ Windows平台 模拟键盘 / 鼠标操作

    原理:调用Windows API 头文件: Windows.h 鼠标 参考:MSDN :mouse_event function 按键 使用定义在Winuser.h中的mouse_event函数(Wi ...

  10. C# 使用Win32 API模拟键盘鼠标操作网页

    在webbrowser控件中的document complete 事件中设置链接到自身 private void ieFrame_DocumentCompleted(object sender, We ...

最新文章

  1. 运营书籍:新媒体运营实战笔记
  2. 用 GDI 操作 EMF 文件[8]: 绘制图元文件时改变画笔与画刷
  3. VTK:几何对象之Polyhedron
  4. Master of GCD(差分数组||线段树)
  5. php对话框制作,织梦系统“提示窗口对话框类”详解,oxwindow.class.php、catalog_do.php...
  6. QQuickRenderControl
  7. 计算机专业能评电子工程师吗,计算机工程师职称 评定条件
  8. Mybatis 开发 dao 的方法
  9. 《精通JavaScript》总结
  10. Kali、linux中安装软件
  11. 趋势杀毒软件注意事项
  12. SQL 校验身份证格式
  13. 新浪微博正在审核的开发者平台应用添加测试账号
  14. Reducing Participation Costs via Incremental Verification for Ledger Systems学习笔记
  15. 基于UDP的企业级大文件传输体系
  16. matlab符号计算证明sin,matlab的符号计算
  17. 2019.8.7 金华正睿集训总结Day11(ACM)
  18. 【蓝桥杯单片机】第十三届蓝桥杯单片机省赛客观题及其题解
  19. 什么是Perl语言?
  20. OA系统都能为企业带来什么

热门文章

  1. Red5服务器端报错:无法解析类型ResourcePatternResolver
  2. java压缩单个文件
  3. JSP + AjaxAnywhere页面开发规范
  4. 彻底解决四种路由器不能上网故障
  5. python函数名的作用_Python:函数名称空间与作用域:
  6. SharedMaterial的一些问题
  7. 进程同步与互斥:POSIX有名信号量
  8. tar命令压缩和解压缩
  9. Spring AOP(三)之AfterThrowing增强处理
  10. Struts2标签库(四)之非表单标签