zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java屏蔽Windows按键代码详解编程语言

JAVAWindows编程语言代码 详解 屏蔽 按键
2023-06-13 09:20:30 时间
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); 

 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); 

}

10901.html

cjavawindows