Java运用JNI调用dll实现屏蔽系统热键

这几天用Java做个锁屏软件需要屏蔽系统热键,就是Win+D,Ctrl+Alt+Del等,参考了这篇文章:

Java运用JNI调用dll(含源码)实现屏蔽系统热键和任务栏

但是对于只懂Java的人无疑是一种折磨,

好不容易跟着文章做下来又报错,总之很是痛苦,

今天又看了篇文章:

结合这两篇文章终于实现了Java屏蔽系统热键了。

下面写出来,图文结合,宣泄一下这几天的郁闷。

【说明】

1.本文都是在eclipse下开发的,dos下可以自己尝试。

2.以下源码都是上面第一篇文章中的

【1】编写Java文件,编译出class文件,javah出.h文件

——Java源码

package com.uikoo9.JLocker;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

/**
*
* @author Administrator
*/
public class ShieldHotKey {
    static{
     //下面这部分是为了增加灵活性,dll可以放到jar包中
     try
     {
      File file = File.createTempFile("shieldHK", ".dll");
            FileOutputStream fout = new FileOutputStream(file);
            InputStream in = ShieldHotKey.class.getResourceAsStream("shieldHK.dll");
           
            byte[] b = new byte[1024];
            int len = 0;
            while((len = in.read(b)) != -1){
                fout.write(b, 0, len);
            }
           
            fout.flush();
            in.close();
            fout.close();
           
            System.load(file.getAbsolutePath());
  }
     catch (Exception e) {}
     
//        System.load("D:/shieldHK.dll");
    }
    public static native void Attach();//启动屏蔽
    public static native void Detach();//关闭屏蔽
}

说明:1.类ShieldHotKey是建在com.uikoo9.JLocker包下的,

--------------------------------------分割线 --------------------------------------

编写高质量代码 改善Java程序的151个建议 PDF高清完整版

Java 8简明教程

Java对象初始化顺序的简单验证

Java对象值传递和对象传递的总结

Java对象序列化ObjectOutputStream和ObjectInputStream示例

--------------------------------------分割线 --------------------------------------

2.将原来的System.load("D:/shieldHK.dll");改写是为了增加灵活性。

——Eclipse自动会生成.class文件,找到它,如图:

Java运用JNI调用dll实现屏蔽系统热键

——cmd下,到这个bin的这一层,输入已下命令生成.h文件:

Java运用JNI调用dll实现屏蔽系统热键

生成的.h文件:

Java运用JNI调用dll实现屏蔽系统热键

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b75526e69019ea8652dedc0a9785313d.html