如何用JAVA做禁用键盘,鼠标,任务管理器等任

 我来答
就烦条0o
2018-01-03 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46484
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
    import org.eclipse.swt.events.DisposeEvent;  
    import org.eclipse.swt.events.DisposeListener;  
    import org.eclipse.swt.internal.win32.OS;  
    import org.eclipse.swt.widgets.Shell;  
    import org.sf.feeling.swt.win32.extension.hook.Hook;  
    import org.sf.feeling.swt.win32.extension.hook.Keyboard_LLHook;  
    import org.sf.feeling.swt.win32.extension.hook.Mouse_LLHook;  
    import org.sf.feeling.swt.win32.extension.hook.data.Keyboard_LLHookData;  
    import org.sf.feeling.swt.win32.extension.hook.data.Mouse_LLHookData;  
    import org.sf.feeling.swt.win32.extension.hook.interceptor.InterceptorFlag;  
    import org.sf.feeling.swt.win32.extension.hook.interceptor.Keyboard_LLHookInterceptor;  
    import org.sf.feeling.swt.win32.extension.hook.interceptor.Mouse_LLHookInterceptor;  
    import org.sf.feeling.swt.win32.extension.registry.RegistryKey;  
    import org.sf.feeling.swt.win32.extension.registry.RegistryValue;  
    import org.sf.feeling.swt.win32.extension.registry.RootKey;  
    import org.sf.feeling.swt.win32.extension.registry.ValueType;  
    /** 
     * Ticket:屏蔽系统快捷键,供锁屏使用(添加禁用鼠标事件) 
     *  
     * @author XXXXX 
     */  
    public class WinEventInterceptor {  
        private static Shell tagShell;  
        private static Keyboard_LLHookInterceptor keyboard_LLHookInterceptor;  
        private static Mouse_LLHookInterceptor mouse_LLHookInterceptor;  
        static {  
            keyboard_LLHookInterceptor = new Keyboard_LLHookInterceptor() {  
                @Override  
                public InterceptorFlag intercept(Keyboard_LLHookData hookData) {  
                    int vkCode = hookData.vkCode();  
                    boolean isCtrlPressed = OS.GetKeyState(17) < 0 ? true : false;  
                    boolean isAltPressed = OS.GetKeyState(18) < 0 ? true : false;  
                    // 屏蔽windows键  
                    if (vkCode == 91) {  
                        return InterceptorFlag.FALSE;  
                    }  
                    // 屏蔽ALT+ESC  
                    if (isAltPressed && vkCode == 27) {  
                        return InterceptorFlag.FALSE;  
                    }  
                    // 屏蔽CTRL+ESC  
                    if (isCtrlPressed && vkCode == 27) {  
                        return InterceptorFlag.FALSE;  
                    }  
                    // 屏蔽ALT+TAB  
                    if (isAltPressed && vkCode == 9) {  
                        return InterceptorFlag.FALSE;  
                    }  
                    // 屏蔽ALT+F4  
                    if (isAltPressed && vkCode == 115) {  
                        return InterceptorFlag.FALSE;  
                    }  
                    return InterceptorFlag.TRUE;  
                }  
            };  
            mouse_LLHookInterceptor = new Mouse_LLHookInterceptor() {  
                @Override  
                public InterceptorFlag intercept(Mouse_LLHookData hookData) {  
                    return InterceptorFlag.FALSE;  
                }  
            };  
        }  
        /** 
         * 根据disable为true时,鼠标不可用;false时,鼠标可用 
         *  
         * @param disable 
         */  
        public static void setMouseDisable(boolean disable) {  
            if (disable) {  
                Mouse_LLHook.addHookInterceptor(mouse_LLHookInterceptor);  
                if (!Mouse_LLHook.isInstalled())  
                    Mouse_LLHook.installHook();  
            } else {  
                if (Mouse_LLHook.isInstalled())  
                    Mouse_LLHook.unInstallHook();  
            }  
        }  
        /** 
         * 自定义添加禁用哪些鼠标事件 
         *  
         * @param disable 
         * @param mouseEvents 
         */  
        public static void setMouseDisable(boolean disable, final MOUSE_EVENT... mouseEvents) {  
            if (disable) {  
                Mouse_LLHook.addHookInterceptor(new Mouse_LLHookInterceptor() {  
                    @Override  
                    public InterceptorFlag intercept(Mouse_LLHookData hookData) {  
                        MOUSE_EVENT event = null;  
                        if (hookData.getWParam() == 512) {  
                            event = MOUSE_EVENT.MOVE;  
                        } else if (hookData.getWParam() == 513 || hookData.getWParam() == 514) {  
                            event = MOUSE_EVENT.LEFT_PRESS;  
                        } else if (hookData.getWParam() == 516 || hookData.getWParam() == 517) {  
                            event = MOUSE_EVENT.RIGHT_PRESS;  
                        } else if (hookData.getWParam() == 519 || hookData.getWParam() == 520) {  
                            event = MOUSE_EVENT.MIDDLE_PRESS;  
                        } else if (hookData.getWParam() == 522 && hookData.getMouseData() > 0) {  
                            event = MOUSE_EVENT.WHEEL_UP;  
                        } else if (hookData.getWParam() == 522 && hookData.getMouseData() < 0) {  
                            event = MOUSE_EVENT.WHEEL_DOWN;  
                        }  
                        for (MOUSE_EVENT mouse_event : mouseEvents) {  
                            if (mouse_event == event) {  
                                return InterceptorFlag.FALSE;  
                            }  
                        }  
                        return InterceptorFlag.TRUE;  
                    }  
                });  
                if (!Mouse_LLHook.isInstalled())  
                    Mouse_LLHook.installHook();  
            } else {  
                if (Mouse_LLHook.isInstalled())  
                    Mouse_LLHook.unInstallHook();  
            }  
        }  
        /** 
         * 禁用几个快捷键,windows键,ALT+ESC,CTRL+ESC,ALT+TAB,ALT+F4,任务管理器 
         *  
         * @param shell 
         *            程序主窗口 
         * @param disable 
         *            是否禁用 
         */  
        public static void setKeyDisable(final Shell shell, boolean disable) {  
            if (shell == null) {  
                return;  
            }  
            DisposeListener disposeListener = new DisposeListener() {  
                @Override  
                public void widgetDisposed(DisposeEvent e) {  
                    if (Hook.KEYBOARD.isInstalled(shell))  
                        Hook.KEYBOARD.uninstall(shell);  
                    taskmgrDisable(false);  
                }  
            };  
            if (disable) {  
                if (tagShell == shell) {  
                    return;  
                }  
                taskmgrDisable(disable);  
                Keyboard_LLHook.addHookInterceptor(keyboard_LLHookInterceptor);  
                if (!Keyboard_LLHook.isInstalled())  
                    Keyboard_LLHook.installHook();  
                shell.addDisposeListener(disposeListener);  
                tagShell = shell;  
            } else {  
                if (tagShell != shell) {  
                    return;  
                }  
                taskmgrDisable(disable);  
                if (Keyboard_LLHook.isInstalled())  
                    Keyboard_LLHook.unInstallHook();  
                shell.removeDisposeListener(disposeListener);  
                tagShell = null;  
            }  
        }  
        /** 
         * 禁用任务管理器 
         *  
         * @param useable 
         *            useable:true为禁用,false为启用 
         */  
        private static void taskmgrDisable(boolean useable) {  
            RootKey currentUser = RootKey.HKEY_CURRENT_USER;  
            RegistryKey key = new RegistryKey(currentUser,  
                    "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");  
            if (!key.exists()) {  
                key.create();  
            }  
            RegistryValue value = new RegistryValue();  
            value.setType(ValueType.REG_DWORD);  
            if (useable)  
                value.setData(1);  
            else  
                value.setData(0);  
            value.setName("DisableTaskmgr");  
            key.setValue(value);  
        }  
        enum MOUSE_EVENT {  
            MOVE, LEFT_PRESS, RIGHT_PRESS, MIDDLE_PRESS, WHEEL_UP, WHEEL_DOWN  
        }  
    }

其中
setKeyDisable(final Shell shell, boolean disable)  
这个方法是因为程序的特殊要求,可以不需要shell。
屏蔽任务管理器是用了一个取巧的办法,在注册表中设置字段,让其不可用。屏蔽快捷键+注册表不可用时,程序就实现锁屏无法切换了。
鼠标事件是后添加的。

南京新华电脑专修学院
2018-08-01 · 新华电脑教育用心为户提供专业
南京新华电脑专修学院
新华电脑教育用心为户提供专业的电脑相关专业疑问解答
向TA提问
展开全部
Ctrl+shift+ESC组合键最适合在图形界面中操作。

②打开任务管理器之后,可以继续使用快捷键操作。按tab键可以跳转当前的任务。

③这时,再使用上下(▲▼)键,选中需要管理的进程。

④选中之后,按一下Alt+E键就能通过键盘直接关闭这个进程。

⑤同样,使用Alt组合键也能打开任务管理器的菜单。Alt+F键→打开文件菜单。

⑥Alt+O键→打开选项菜单
在弹出的菜单中,有相应的快捷键提示,按Alt键加这个字母键即可。

⑦Alt+V键→打开查看菜单
使用上下键可以选择不同的菜单。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式