美文网首页
java 自定义点击、键盘事件

java 自定义点击、键盘事件

作者: codeflame | 来源:发表于2018-08-29 20:46 被阅读0次

首先必要的:
c++ dll编写与加载
c++ windows平台的Hook
掌握hook与dll编写。

学习jni,因为java原生代码无法监控windows系统消息,因而无法去获取硬件(键盘、鼠标)的消息,也就无法写事件。
这里转载:逝我作者的jni教程:
JNI开发系列①JNI概念及开发流程
JNI开发系列②.h头文件分析
JNI开发系列③C语言调用Java字段与方法
JNI开发系列④C语言调用构造方法
JNI开发系列⑤对象引用的处理
通过jni,你可以把java中的方法以dll动态链接库的方式实现。



代码不贴了,说说思路:
1.java中写一个类,类中一个native方法一个普通方法,去生成.h头文件。
2.c/c++中,按照上面hook文章的流程写好子程,在子程中调用java普通方法。
把java的native方法实现成:调用SetWindowsHookEx去挂hook,然后while(GetMessage(null,0,0,0))来让当前线程进入等待态。
3.注意,这里的实现中,必须使用low-level,也即是WH_KEYBOARD_LL而不是WH_KEYBOARD去填参数。
4.上面已经足够了,相当于简单地把东西搬到java去。
更进一步的,建议在java中开多一个线程去调用这个native方法,这样就可以实现不卡主线程去挂全局hook。另外可以写多一个native方法,用PostThreadMessage发送一个WM_QUIT消息给while循环那个线程,让他退出循环。这步基本都是完善些包装而已。
5.通过上面的内容,到这里为止,已经解决这个底层问题---在java中当键盘(鼠标)有输入时触发特定的函数。接下来只需要按照观察者模式思想去把java类改造成事件源-事件监听器-事件对象这一套东西,从系统api级别开始编写含有自定义事件的类就算简单完成了。

相关文章

  • java 自定义点击、键盘事件

    首先必要的:c++ dll编写与加载c++ windows平台的Hook掌握hook与dll编写。 学习jni,因...

  • 自定义View入门(七) - 监听

    本章目录 Part One:自定义View的点击事件 Part Two:点击事件处理 自定义View的点击事件 官...

  • 转自http://www.2cto.com/kf/201505/

    Android 中自定义软键盘 \ \ \ 图一为搜狗输入法、图二为自定义密码键盘、图三为自定义密码键盘 java...

  • 10 2.0 for循环和自定义键盘事件和过滤器

    for循环 自定义键盘事件 过滤器

  • jQuery(事件)

    DOM事件 表单事件 键盘事件 事件的绑定和解绑 事件对象的使用 自定义事件

  • 键盘点击事件

    键盘点击事件 1、keyup 键盘按键松开后执行2、keydown 键盘按键按下时执行3、keypress 键盘按...

  • JavaScript 自定义事件(一)

    所谓自定义事件,就是有别于带有浏览器特定行为的事件(鼠标事件,键盘事件,html事件等),事件名称可以自定义,可以...

  • v-on之事件监听

    常用事件有:点击、拖拽和键盘事件等v-on:click(@click) ——>注册点击事件v-on:keydown...

  • iOS 自定义键盘

    自定义键盘属于App的扩展功能,添加扩展键盘的步骤如下: 选择自定义扩展键盘,点击Next,会自动创建一个父类是U...

  • Js事件和事件对象

    一、事件概述 事件三要素:事件源:触发(被)事件的元素事件类型:事件的触发方式(例如鼠标点击或键盘点击)事件处理程...

网友评论

      本文标题:java 自定义点击、键盘事件

      本文链接:https://www.haomeiwen.com/subject/xrokwftx.html