歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java運用JNI調用dll實現屏蔽系統熱鍵

【前言】

這幾天用Java做個鎖屏軟件需要屏蔽系統熱鍵,就是Win+D,Ctrl+Alt+Del等,參考了這篇文章:

Java運用JNI調用dll(含源碼)實現屏蔽系統熱鍵和任務欄 http://www.linuxidc.com/Linux/2014-07/103941.htm

但是對於只懂Java的人無疑是一種折磨,

好不容易跟著文章做下來又報錯,總之很是痛苦,

今天又看了篇文章:http://www.linuxidc.com/Linux/2014-07/103940.htm

結合這兩篇文章終於實現了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高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htm

Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm

Java對象初始化順序的簡單驗證 http://www.linuxidc.com/Linux/2014-02/96220.htm

Java對象值傳遞和對象傳遞的總結 http://www.linuxidc.com/Linux/2012-12/76692.htm

Java對象序列化ObjectOutputStream和ObjectInputStream示例 http://www.linuxidc.com/Linux/2012-08/68360.htm

--------------------------------------分割線 --------------------------------------

2.將原來的System.load("D:/shieldHK.dll");改寫是為了增加靈活性。

——Eclipse自動會生成.class文件,找到它,如圖:

——cmd下,到這個bin的這一層,輸入已下命令生成.h文件:

生成的.h文件:

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-07/103942p2.htm

Copyright © Linux教程網 All Rights Reserved