java+jna+DD实现全局键鼠驱动级模拟
java中的Robot类中自带了模拟鼠标和键盘的相关事件,但是这样的模拟带有一定的局限性,那么如何实现功能更加强大的模拟呢?
运行环境
IDEA+JDK1.8(64位)+Maven
请以管理员身份运行IDEA,否则程序会运行失败
准备工作
所需jna依赖(或者相应jar包):
maven依赖下载地址
<dependencies><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna-platform</artifactId><version>4.1.0</version></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>4.1.0</version></dependency>
</dependencies>
下载DD动态库(需要64位JDK环境):
驱动下载-百度网盘链接
提取码:ijnj
新建maven项目,并将刚才下载的DD动态库拷贝到maven项目的resource目录下:
最后需要将DD动态库导入到项目中:
IDEA中:File->Project Structure->Libraries:点击红色标注的加号:
找到刚才下载的DD动态库文件,选中,点击ok,准备工作已完成。
运行
需要为DD驱动准备一个调用接口,代码如下:
import com.sun.jna.Library;
import com.sun.jna.Native;public interface DD extends Library {DD INSTANCE = (DD) Native.loadLibrary("DD.64", DD.class);int DD_mov(int x, int y);int DD_movR(int dx, int dy);int DD_btn(int btn);int DD_whl(int whl);int DD_key(int ddcode, int flag);int DD_str(String s);
}
接下来就可以愉快的玩耍了:
public class Test {public static void main(String[] args) throws InterruptedException {//模拟鼠标移动 并且点击两次window键DD.INSTANCE.DD_mov(1,1);System.out.println("鼠标移动到(1,1)位置");TimeUnit.SECONDS.sleep(1);//休眠,非必须DD.INSTANCE.DD_key(601,1);System.out.println("第一次按下win(601)键");TimeUnit.SECONDS.sleep(1);DD.INSTANCE.DD_key(601,2);System.out.println("第一次松开win(601)键");TimeUnit.SECONDS.sleep(1);System.out.println("第二次按下win(601)键");DD.INSTANCE.DD_key(601,1);TimeUnit.SECONDS.sleep(1);System.out.println("第二次松开win(601)键");DD.INSTANCE.DD_key(601,2);TimeUnit.SECONDS.sleep(1);}
}
DD动态库使用说明:
DD_btn(参数)
功能: 模拟鼠标点击
参数: 1 =左键按下 ,2 =左键放开
4 =右键按下 ,8 =右键放开
16 =中键按下 ,32 =中键放开
64 =4键按下 ,128 =4键放开
256 =5键按下 ,512 =5键放开
例子:模拟鼠标右键 只需要连写(中间可添加延迟) dd_btn(4); dd_btn(8);DD_mov(参数x,参数y)
功能: 模拟鼠标结对移动
参数: 参数x , 参数y 以屏幕左上角为原点。
例子: 把鼠标移动到分辨率1920*1080 的屏幕正中间,
int x = 1920/2 ; int y = 1080/2;
DD_mov(x,y) ;DD_movR(参数dx,参数dy)
功能: 模拟鼠标相对移动
参数: 参数dx , 参数dy 以当前坐标为原点。
例子: 把鼠标向左移动10像素
DD_movR(-10,0) ;DD_whl(参数)
功能: 模拟鼠标滚轮
参数: 1=前 , 2 = 后
例子: 向前滚一格, DD_whl(1)DD_key(参数1,参数2)
功能: 模拟键盘按键
参数: 参数1 ,请查看[DD虚拟键盘码表]。
参数2,1=按下,2=放开
例子: 模拟单键WIN,
DD_key(601, 1);DD_key(601, 2);
组合键:ctrl+alt+del
DD_key(600,1);
DD_key(602,1);
DD_key(706,1);
DD_key(706,2);
DD_key(602,2);
DD_key(600,2);DD_str(参数)
功能: 直接输入键盘上可见字符和空格
参数: 字符串, (注意,这个参数不是int32 类型)
例子: DD_str(“MyEmail@aa.bb.cc !@#$”)
键盘码对照:
int A=401;
int B=505;
int C=503;
int D=403;
int E=303;
int F=404;
int G=405;
int H=406;
int I=308;
int J=407;
int K=408;
int L=409;
int M=507;
int N=506;
int O=309;
int P=310;
int Q=301;
int R=304;
int S=402;
int T=305;
int U=307;
int V=504;
int W=302;
int X=502;
int Y=306;
int Z=501;
Over!
java+jna+DD实现全局键鼠驱动级模拟相关推荐
- stm32cubx-usb-hid键鼠
stm32cubx-usb-hid键鼠 发布版本: 1.0 文件密级: 公开资料 前言 概述 读者 本文档(本指南)主要使用于以下工程师: 软件开发工程师 产品版本 修订记录 日期 版本 作者/邮箱 ...
- java 驱动级模拟键盘,易语言开源驱动级模拟键盘工具(可绕过wegame屏蔽)
易语言开源驱动级模拟键盘工具目前一个可以绕过腾讯检测的模拟键盘工具,使用易语言开发,内含开源模块,支持调式修改,有需要模拟键盘的同学可以下载这个驱动模拟键盘来无视腾讯的wegame屏蔽! 相关阅读 手 ...
- Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27
Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需 ...
- 2.4g 无线键鼠对码软件_富德iK8900无线键鼠套装评测:静音纤薄
作为世界三大无线键鼠品牌之一的富德科技,自2008年成立以来就专注于无线键鼠领域.凭借扎实的品质.出色的做工以及时尚潮流的外观设计,获得了众多年轻消费者的青睐.更与时下较为流行的动漫IP合作,推出联名 ...
- 手机键鼠映射软件_吃鸡,我最专业!---盖世小鸡键鼠吃鸡套装评测
Hello大家好,欢迎浏览这篇评测贴.首先很荣幸能够参与本期的评测,毕竟如此炫酷富有科技感的装备是可遇而不可求的,所以不论是得知入选还是收到快递开箱的时候,心情都是无比激动.话不多说,接下来就让我带你 ...
- Python键鼠操作自动化库PyAutoGUI简介
PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样.但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能.下面让我为大家介绍一 ...
- 电脑上玩和平精英_《和平精英》怎么投屏到电脑上?手把手教你电脑键鼠玩手游...
<<和平精英>怎么投屏到电脑上玩?作为一款由端游移植到手机上得FPS射击手游,相比较其他类型的手游,在手机上操作存在一定的局限性,压枪.拾取装备.走位等这些在游戏中的日常操作还是在电 ...
- 两台电脑共享怎么设置_两台电脑共用键鼠的简单设置
两台windows 电脑共享一套键鼠:一个软件就能搞定~ 一句话解决问题: (同一网络条件下)下一个软件 "无界鼠标" 英文名 Mouse without Borders 然后跟着 ...
- 建议检察院服务器服务器配置 显示器,切换器 键鼠
建议检察院服务器服务器配置 显示器,切换器 键鼠 1.1 空 0.9 xuc2013@163.com 转载于:https://www.cnblogs.com/meetrice/archive/2012 ...
最新文章
- Win10下MySQL_Workbench连接远程主机MySQL5.7
- 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
- 网管日志-06.07.12
- 循环节模板 NOJ427Number Sequence
- Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。...
- 200 计算机网络之物理层思维导图小结
- vs2010 插件不显示的问题处理。
- 有钱就是任性!阿里20亿美元拿下网易考拉:欢迎加入阿里动物园
- 10个人做抖音,8个做不起来,为啥?
- Java分布式开发中的RPC
- python菜鸟教程 | if else 判断
- excel双纵坐标轴展示的方法
- pdf转换成jpg python_Python将PDF转成图片PNG和JPG
- 只知道wxid怎么添加好友
- 空气质量提醒 BMI指数计算 Python123题解
- Arcface中的IR_SE模块
- 数学物理方程课程感想
- 对“空间数据库”的理解
- Java中如何给map数组制空,java.util.HashMap可以存储null键和null值。( )
- 计算机英语阅读短文,计算机经 典英语短文阅读.pdf