【前言】
這幾天用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