欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

屏蔽按键,,import com.s

来源: javaer 分享于  点击 15852 次 点评:243

屏蔽按键,,import com.s


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);    }}
相关栏目:

用户点评