是否可以使用java禁用windows鍵和alt +選項卡...是否可以使用java禁用Windows鍵
3
A
回答
6
您可以使用JNA來實現此目的。
在類路徑中包含jna.jar和platform.jar並創建以下類。 該類禁用左窗口鍵(0x5B)和右窗口鍵(0x5C)。所以你可以在switch case語句中添加其他代碼。
應用程序啓動時儘快調用KeyHook.blockWindowsKey()。另一方面,在app關閉時調用unblockWindowsKey()。
由於代碼僅在isWindows()爲true時執行,所以即使在另一個操作系統上運行時也可以始終調用KeyHook.blockWindowsKey()。
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HMODULE;
import com.sun.jna.platform.win32.WinDef.LRESULT;
import com.sun.jna.platform.win32.WinDef.WPARAM;
import com.sun.jna.platform.win32.WinUser.HHOOK;
import com.sun.jna.platform.win32.WinUser.KBDLLHOOKSTRUCT;
import com.sun.jna.platform.win32.WinUser.LowLevelKeyboardProc;
import com.sun.jna.platform.win32.WinUser.MSG;
public class KeyHook {
private static HHOOK hhk;
private static LowLevelKeyboardProc keyboardHook;
private static User32 lib;
public static void blockWindowsKey() {
if (isWindows()) {
new Thread(new Runnable() {
@Override
public void run() {
lib = User32.INSTANCE;
HMODULE hMod = Kernel32.INSTANCE.GetModuleHandle(null);
keyboardHook = new LowLevelKeyboardProc() {
public LRESULT callback(int nCode, WPARAM wParam, KBDLLHOOKSTRUCT info) {
if (nCode >= 0) {
switch (info.vkCode){
case 0x5B:
case 0x5C:
return new LRESULT(1);
default: //do nothing
}
}
return lib.CallNextHookEx(hhk, nCode, wParam, info.getPointer());
}
};
hhk = lib.SetWindowsHookEx(13, keyboardHook, hMod, 0);
// This bit never returns from GetMessage
int result;
MSG msg = new MSG();
while ((result = lib.GetMessage(msg, null, 0, 0)) != 0) {
if (result == -1) {
break;
} else {
lib.TranslateMessage(msg);
lib.DispatchMessage(msg);
}
}
lib.UnhookWindowsHookEx(hhk);
}
}).start();
}
}
public static void unblockWindowsKey() {
if (isWindows() && lib != null) {
lib.UnhookWindowsHookEx(hhk);
}
}
public static boolean isWindows(){
String os = System.getProperty("os.name").toLowerCase();
return (os.indexOf("win") >= 0);
}
}
+0
嗨。有沒有什麼辦法可以禁用ctrl-alt-del?你的代碼運行良好,但不能阻止ctrl-alt-del。任務管理器出現 – MOD
相關問題
- 1. 是否可以在C++中禁用鍵?
- 2. 是否可以使用Puppeteer禁用Websocket?
- 3. 是否可以禁用Controls:HoverButton?
- 4. 是否可以在Windows 7上禁用特定用戶的UAC?
- 5. 是否可以在Windows上使用pyflink?
- 6. 是否可以使用鍵盤映射
- 7. 是否可以使用NULL外鍵?
- 8. 用戶是否可以禁用html5 sessionStorage?
- 9. 是否可以爲所有Java應用程序禁用SSLv3?
- 10. 是否可以在java中使用數組作爲映射鍵?
- 11. 是否可以在Java中使用主/外鍵概念?
- 12. 是否可以使用Java創建dll?
- 13. Java是否可以使用PCF字體?
- 14. 是否可以在Windows中禁用Ctrl + V?
- 15. 是否可以禁用右鍵點擊iframe?
- 16. 是否可以使用Chrome擴展調用鍵盤功能鍵
- 17. 是否可以禁用mysql子查詢?
- 18. 是否可以禁用所有邊界?
- 19. 是否可以禁用負向索引?
- 20. 處理時是否可以禁用ImageButton?
- 21. 是否可以在RichFaces中禁用AJAX?
- 22. 是否可以禁用RESTEasy的RoleBasedSecurityFilter.java?
- 23. 是否可以禁用D的GC?
- 24. 是否可以禁用視圖損失?
- 25. 是否可以從JavaScript內禁用JavaScript?
- 26. 禁用ALT鍵(也可能是Windows鍵)lua
- 27. 是否可以在不禁用JavaScript的情況下禁用AJAX?
- 28. 是否可以使用Android SDK或NDK禁用無線網絡?
- 29. 當iCloud被禁用時,是否可以使用NSMetadataQuery?
- 30. 是否可以使用DefaultClusterRenderer和ClusterManager禁用羣集動畫?
除非使用內核模式設備驅動程序,否則某些擊鍵無法捕捉。爲什麼Windows允許應用程序阻止您切換當前任務? –
雖然你有點Alt + Tab,但實際上有一個很好的例子,可以在遊戲等全屏應用中禁用Win鍵。我無法告訴你有多少次我在遊戲中意外碰到了左側的Win鍵,只是爲了讓整個屏幕最小化。 – Will
@ Will--據推測,Windows設計師認爲不然... –